Использование общих настроек между Unity и SDK для Android

1

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

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

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

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

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

огромное спасибо

Теги:
unity3d

1 ответ

3
Лучший ответ

Вам нужно будет написать плагин для 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;
}



Теперь, на стороне Unity С#, ваш плагин будет иметь такой код, как этот

    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 name to be "John Doe"
void Start () {
    SetPreferenceString("playerName", "John Doe");
}

//Get the stored player name
string GetPlayerName () {
    return GetPreferenceString("playerName");
}




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

Очевидно, убедитесь, что вы оба используете одни и те же настройки!

  • 0
    Спасибо, так много

Ещё вопросы

Сообщество Overcoder
Наверх
Меню