2014-12-29 10 views
1

Я работаю над приложением, использующим собственную разработку sdk для Android. Однако у меня есть сотрудник, который работает над Unity.Использование общих настроек между единством и родным android sdk

Я хотел бы создать задание А, что делает бы какую-то работу, а затем вызвать другой вид деятельности B.

Мой Коллега создает активность экрана B с помощью Unity.

Оба мероприятия будут с использованием общих предпочтений (чтение и запись в него)

Есть ли способ, что это может быть достигнуто?

Спасибо большое

+0

[Взгляните на официальный документ] (http://docs.unity3d.com/Manual/PluginsForAndroid.html). Вы можете сделать это, написав простой плагин. – nexx

ответ

3

Вы должны были бы написать плагин для Android, чтобы получить эту работу. Хотя официальный документ хорош, чтобы начать работу, вот пример кода, который вы можете использовать после того, как пройдете его.

Я не буду вдаваться в подробности о том, как создать плагин, потому что это довольно хорошо задокументированы на сайте Unity (ссылка дается Nexx)

В приведенном ниже примере, я только что написал пару методов. Вы можете изменить их, чтобы принимать и возвращать другие типы данных, или лучше сделать их обобщенными.

Native 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; 
} 



Теперь на 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 }); 
} 



Использование в 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"); 
} 




Это отнюдь не лучший способ написания плагина. Однако он должен дать вам представление о том, как обращаться с SharedPrefs.

Убедитесь в том, что у вас обоих пользователей той же компании.

+0

Спасибо, что так mcuh – Snake