Sna*_*ake 3 android unity-game-engine
我正在使用本机android sdk开发的应用程序。但是我有一个在Unity上工作的同事。
我想创建一个可以完成一些工作的活动A,然后调用另一个活动B。
我的同事正在使用Unity创建活动B屏幕。
这两个活动都将使用共享的首选项(对其进行读写)
有没有办法可以做到这一点?
非常感谢
您需要为Android编写一个插件才能使其正常工作。虽然正式文档非常适合入门,但是这里有一些示例代码,您可以在使用完之后使用。
我不会详细介绍如何创建插件,因为在Unity网站上有很好的记录(nexx给出的链接)
在下面的示例中,我仅编写了两种方法。您可以修改它们以接受并返回其他数据类型,或者更好地使它们通用。
本机Android代码
public static final String PREFS_NAME = "MyPrefsFile";
public void setPreferenceString (String prefKey, String prefValue) {
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString(prefKey, prefValue);
editor.commit();
}
public String getPreferenceString (String prefKey) {
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String playerName = settings.getString(prefKey, "");
return playerName;
}
Run Code Online (Sandbox Code Playgroud)
现在,在Unity C#端,您的插件将具有如下代码
AndroidJavaObject AJO = null;
public void SetPreferenceString (string prefKey, string prefValue) {
if(AJO == null)
AJO = new AndroidJavaObject("com.yourcompany.productname.activity", new object[0]);
AJO.Call("setPreferenceString", new object[] { prefKey, prefValue } );
}
public string GetPreferenceString (string prefKey) {
if(AJO == null)
AJO = new AndroidJavaObject("com.yourcompany.productname.activity", new object[0]);
if(AJO == null)
return string.Empty;
return AJO.Call<string>("getPreferenceString", new object[] { prefKey } );
}
Run Code Online (Sandbox Code Playgroud)
在Unity中的用法
//Setting a player's name to be "John Doe"
void Start () {
SetPreferenceString("playerName", "John Doe");
}
//Get the stored player's name
string GetPlayerName () {
return GetPreferenceString("playerName");
}
Run Code Online (Sandbox Code Playgroud)
这绝不是编写插件的最佳方法。但是,它应该为您提供一个如何处理SharedPrefs的思路。
显然,确保你们两个都使用相同的首选项!
| 归档时间: |
|
| 查看次数: |
2774 次 |
| 最近记录: |