新增對特定於平臺的程式碼的支援

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 並獲取任何跨平臺介面。呼叫任何方法並且(假設執行的程式碼是正確的)你將在任何平臺上看到它執行與平臺特定程式碼相關的操作