添加对特定于平台的代码的支持

LibGDX 的设计方式使你可以编写相同的代码并将其部署在多个不同的平台上。但是,有时你希望访问特定于平台的代码。例如,如果你的游戏中有排行榜和成就,除了在本地存储它们之外,你可能还想使用特定于平台的工具(如 Google Play 游戏)。或者你想使用数据库,或者完全不同的东西。

你无法将此类代码添加到核心模块中。所以第一步是创建一个接口。在核心模块中创建它。第一个是管理其他接口的实用程序:

public interface PlatformWrapper{
    //here you can also add other things you need that are platform specific.
    //If you want to create your own file saver for an instance, a JSON based database,
    //achievements, leaderboards, in app purchases and anything else you need platform specific code for.
    SQLWrapper getSQLSaver();//This one will be used in this example
    AchievementWrapper getAchievementHandler();//this line is here as an example
}

然后,我们需要创建第二个接口,即 SQLWrapper。这个也在核心模块中。

public interface SQLWrapper{
    void init(String DATABASE);
    void saveSerializable(int id, Object o);
    Object loadSerializable(int id, Object o);
    void saveString(int id, String s);
    //.... and other methods you need here. This is something that varies
    //with usage. You may not need the serializable methods, but really need a custom method for saving 
    //an entire game world. This part is entirely up to you to find what methods you need
   
    //With these three methods, always assume it is the active database in question. Unless 
    //otherwise specified, it most likely is
    String getActiveDatabase();
    void deleteDatabase();
    void deleteTable(String table);//delete the active table
}

现在,你需要进入每个项目并创建一个实现 PlatformWrapper 的类和一个实现 SQLWrapper 的类。在每个项目中,你都可以添加必要的代码,例如实例,构造函数等。

在覆盖了所有接口之后,确保它们在实现 PlatformWrapper 的类中都有一个实例(并且有一个 getter)。最后,更改主类中的构造函数。主类是你从启动器引用的类。它要么扩展 ApplicationAdapter,要么实现 ApplicationListener,要么扩展 Game。编辑构造函数并添加 PlatformWrapper 作为参数。在平台包装器内部,除了所有其他包装器(sql,成就或你添加的任何其他包装器)之外,你还有一些实用程序(如果你添加了任何实用程序)。

现在,如果一切都正确设置,你可以调用 PlatformWrapper 并获取任何跨平台接口。调用任何方法并且(假设执行的代码是正确的)你将在任何平台上看到它执行与平台特定代码相关的操作