Как обновить файл актива единства с помощью кода - PullRequest
0 голосов
/ 20 февраля 2019

Я хочу переключать среду между отладкой и выпуском с помощью операций графического интерфейса.

Некоторые сторонние конфигурации SDK необходимо изменить в файле .asset. Я использую AssetDatabase

[MenuItem("TEST/Switch Environment/Switch to Dev")]
public static void Switch2Dev()
{

    object []data = AssetDatabase.LoadAllAssetsAtPath ("./Assets/_ThirdParty/Photon/PhotonUnityNetworking/Resources/PhotonServerSettings.asset");

    if (data == null || data.Length == 0) {
        Debug.Log ("cannot read content from PhotonServerSettings.asset");
        return;
    }
    Photon.Pun.ServerSettings settings = data [0] as Photon.Pun.ServerSettings;

    settings.AppSettings.Server = "10.10.10.10";
    settings.AppSettings.Port = 4530;
    settings.AppSettings.Protocol = ExitGames.Client.Photon.ConnectionProtocol.Tcp;
    AssetDatabase.SaveAssets ();
}

и содержимое файла .asset:

%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_PrefabParentObject: {fileID: 0}
  m_PrefabInternal: {fileID: 0}
  m_GameObject: {fileID: 0}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 9f3758f8f58fdef43803eb9be1df0608, type: 3}
  m_Name: PhotonServerSettings
  m_EditorClassIdentifier: 
  AppSettings:
    AppIdRealtime: it can be empty
    AppIdChat: 
    AppIdVoice: 
    AppVersion: 
    UseNameServer: 0
    FixedRegion: 
    Server: 20.10.10.10
    Port: 4530
    Protocol: 1
    EnableLobbyStatistics: 0
    NetworkLogging: 1
  StartInOfflineMode: 0
  PunLogging: 0
  EnableSupportLogger: 0
  RunInBackground: 1
  RpcList:
  - DestroySpaceship
  - Fire
  - ReceivePosition
  - RespawnSpaceship
  - ReceiveDressUpCommand
  - ReceiveLoadDressUpCommand
  - ReceiveSendLoginCommand
  - ReceiveSetActiveMyself
  DisableAutoOpenWizard: 1
  ShowSettings: 1

Когда я нажимаю кнопку Switch to Dev , содержимое не может быть успешно обновлено. Я также пытаюсь добавитьследующие коды:

EditorUtility.SetDirty(data[0]);

Он также не может быть успешно обновлен. Если этот метод не может быть использован, я буду использовать StreamWriter и StreamReader для обновления текстового файла ....

[Редактировать версию] Это не может работать вообще.

[MenuItem("TEST/Switch Environment/Switch to Prod")]
public static void Switch2Prod()
{
    UnityEngine.Object []data = AssetDatabase.LoadAllAssetsAtPath("./Assets/_ThirdParty/Photon/PhotonUnityNetworking/Resources/PhotonServerSettings.asset");

    if (data == null || data.Length == 0) {
        GVRChat.Log ("cannot read content from PhotonServerSettings.asset");
        return;
    }
    EditorUtility.SetDirty(data[0]);
    Photon.Pun.ServerSettings settings = data [0] as Photon.Pun.ServerSettings;
    settings.AppSettings.Server = "2.2.2.2";
    settings.AppSettings.Port = 4530;
    settings.AppSettings.Protocol = ExitGames.Client.Photon.ConnectionProtocol.Tcp;

    AssetDatabase.SaveAssets ();
    AssetDatabase.Refresh ();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...