This commit is contained in:
2026-04-30 16:52:19 +07:00
parent 0542f5656f
commit 4709fa0c55
6 changed files with 95 additions and 29 deletions

View File

@@ -63,6 +63,9 @@ namespace Hallucinate.UI
private const string UI_SCALE_KEY = "UIScale";
[Header("Development Settings")]
[SerializeField] private bool allowMultipleInstances = true;
private void Awake()
{
if (Instance != null && Instance != this)
@@ -73,6 +76,19 @@ namespace Hallucinate.UI
Instance = this;
DontDestroyOnLoad(gameObject);
// Single instance guard
if (!Application.isEditor && !allowMultipleInstances)
{
var currentProcess = System.Diagnostics.Process.GetCurrentProcess();
var processes = System.Diagnostics.Process.GetProcessesByName(currentProcess.ProcessName);
if (processes.Length > 1)
{
Debug.LogError("[UIManager] Another instance is already running. Quitting to prevent save conflict.");
Application.Quit();
return;
}
}
_uiDocument = GetComponent<UIDocument>();
UnityEngine.Cursor.visible = false;
@@ -92,10 +108,10 @@ namespace Hallucinate.UI
public void SetUIScale(float scale)
{
if (_uiDocument == null || _uiDocument.panelSettings == null) return;
// Unity UI Toolkit dùng panelSettings để điều khiển tỉ lệ
// Chúng ta thay đổi scale multiplier
_uiDocument.panelSettings.scale = scale;
// Chúng ta thay đổi scale multiplier. Mặc định 1.0 sẽ tương ứng với visual scale là 1.3
_uiDocument.panelSettings.scale = scale * 1.3f;
PlayerPrefs.SetFloat(UI_SCALE_KEY, scale);
PlayerPrefs.Save();
}
@@ -105,7 +121,6 @@ namespace Hallucinate.UI
float savedScale = PlayerPrefs.GetFloat(UI_SCALE_KEY, 1.0f);
SetUIScale(savedScale);
}
private void Start()
{
if (_uiDocument == null) _uiDocument = GetComponent<UIDocument>();