Я хочу переключать среду между отладкой и выпуском с помощью операций графического интерфейса.
Некоторые сторонние конфигурации 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 ();
}