123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- // -----------------------------------------------------------------------
- // <copyright file="PhotonAppSettings.cs" company="Exit Games GmbH">
- // </copyright>
- // <author>developer@photonengine.com</author>
- // ----------------------------------------------------------------------------
- #if UNITY_2017_4_OR_NEWER
- #define SUPPORTED_UNITY
- #endif
- #if !PHOTON_UNITY_NETWORKING
- namespace Photon.Realtime
- {
- using System;
- using System.IO;
- using UnityEditor;
- using UnityEngine;
- /// <summary>
- /// Collection of connection-relevant settings, used internally by PhotonNetwork.ConnectUsingSettings.
- /// </summary>
- /// <remarks>
- /// Includes the AppSettings class from the Realtime APIs plus some other, PUN-relevant, settings.</remarks>
- [Serializable]
- [HelpURL("https://doc.photonengine.com/en-us/pun/v2/getting-started/initial-setup")]
- public class PhotonAppSettings : ScriptableObject
- {
- [Tooltip("Core Photon Server/Cloud settings.")]
- public AppSettings AppSettings;
- #if UNITY_EDITOR
- [HideInInspector]
- public bool DisableAutoOpenWizard;
- //public bool ShowSettings;
- //public bool DevRegionSetOnce;
- #endif
- private static PhotonAppSettings instance;
- /// <summary>Serialized server settings, written by the Setup Wizard for use in ConnectUsingSettings.</summary>
- public static PhotonAppSettings Instance
- {
- get
- {
- if (instance == null)
- {
- LoadOrCreateSettings();
- }
- return instance;
- }
- private set { instance = value; }
- }
- public static void LoadOrCreateSettings()
- {
- if (instance != null)
- {
- Debug.LogWarning("Instance is not null. Will not LoadOrCreateSettings().");
- return;
- }
- #if UNITY_EDITOR
- // let's check if the AssetDatabase finds the file; aimed to avoid multiple files being created, potentially a futile step
- AssetDatabase.Refresh();
- #endif
- // try to load the resource / asset (ServerSettings a.k.a. PhotonServerSettings)
- instance = (PhotonAppSettings)Resources.Load(typeof(PhotonAppSettings).Name, typeof(PhotonAppSettings));
- if (instance != null)
- {
- //Debug.LogWarning("Settings from Resources."); // DEBUG
- return;
- }
- // create it if not loaded
- if (instance == null)
- {
- instance = (PhotonAppSettings)CreateInstance(typeof(PhotonAppSettings));
- if (instance == null)
- {
- Debug.LogError("Failed to create ServerSettings. PUN is unable to run this way. If you deleted it from the project, reload the Editor.");
- return;
- }
- //Debug.LogWarning("Settings created!"); // DEBUG
- }
- // in the editor, store the settings file as it's not loaded
- #if UNITY_EDITOR
- string punResourcesDirectory = "Assets/Photon/Resources/";
- string serverSettingsAssetPath = punResourcesDirectory + typeof(PhotonAppSettings).Name + ".asset";
- string serverSettingsDirectory = Path.GetDirectoryName(serverSettingsAssetPath);
- if (!Directory.Exists(serverSettingsDirectory))
- {
- Directory.CreateDirectory(serverSettingsDirectory);
- AssetDatabase.ImportAsset(serverSettingsDirectory);
- }
- AssetDatabase.CreateAsset(instance, serverSettingsAssetPath);
- AssetDatabase.SaveAssets();
- //Debug.Log("Settings stored to DB."); // DEBUG
- #endif
- }
- }
- }
- #endif
|