Files

90 lines
2.6 KiB
C#
Raw Permalink Normal View History

2026-05-01 05:47:12 +09:00
using System.IO;
using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace Photon.Chat.DemoChat
{
/// <summary>
/// Utility class to provide an instance with the Chat AppId to use by the demo. Can use PUN PhotonServerSettings or work as standalone.
/// </summary>
/// <remarks>
/// See the Instance getter for the different implementations (with and without PUN).
/// </remarks>
public class ChatSettings : ScriptableObject
{
[Tooltip("Your Chat AppId from Photon Dashboard")]
public string AppId;
[HideInInspector]
public bool WizardDone;
// backing field for property
private static ChatSettings instance;
// provides access to instance of ChatSettings. file gets created if not available
public static ChatSettings Instance
{
get
{
#if PUN_2_OR_NEWER
if (instance == null)
{
instance = ScriptableObject.CreateInstance<ChatSettings>();
}
instance.AppId = Photon.Pun.PhotonNetwork.PhotonServerSettings.AppSettings.AppIdChat;
return instance;
#else
if (instance == null)
{
instance = Load();
}
return instance;
#endif
}
}
// loads existing "ChatSettingsFile" of type ChatSettings from a Resources folder
public static ChatSettings Load()
{
ChatSettings settings = (ChatSettings)Resources.Load("ChatSettingsFile", typeof(ChatSettings));
if (settings != null)
{
return settings;
}
else
{
return Create();
}
}
// creates an instance of ChatSettings and in Editor, stores it in a default path
private static ChatSettings Create()
{
ChatSettings settings = (ChatSettings)ScriptableObject.CreateInstance("ChatSettings");
#if UNITY_EDITOR
if (!Directory.Exists("Assets/Resources"))
{
AssetDatabase.CreateFolder("Assets", "Resources");
AssetDatabase.ImportAsset("Assets/Resources");
}
AssetDatabase.CreateAsset(settings, "Assets/Resources/ChatSettingsFile.asset");
EditorUtility.SetDirty(settings);
settings = (ChatSettings)Resources.Load("ChatSettingsFile", typeof(ChatSettings));
#endif
return settings;
}
}
}