From 225ef2ab53fffd6a00caa425d6f86e64d1e3f6b6 Mon Sep 17 00:00:00 2001 From: Weicao-CatilGrass <1992414357@qq.com> Date: Thu, 4 Jun 2026 20:27:04 +0800 Subject: 增加存档系统并绑定到门上 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/OneWayDoorBehaviour.cs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'Assets/Scripts/OneWayDoorBehaviour.cs') diff --git a/Assets/Scripts/OneWayDoorBehaviour.cs b/Assets/Scripts/OneWayDoorBehaviour.cs index 25a06ec..cb07762 100644 --- a/Assets/Scripts/OneWayDoorBehaviour.cs +++ b/Assets/Scripts/OneWayDoorBehaviour.cs @@ -1,5 +1,8 @@ -using System; +#if UNITY_EDITOR +using UnityEditor; +#endif using UnityEngine; +using Random = UnityEngine.Random; public class OneWayDoorBehaviour : MonoBehaviour { @@ -7,13 +10,35 @@ public class OneWayDoorBehaviour : MonoBehaviour public Transform door; public GameObject messageHint; + public bool lockId; + [HideInInspector] public int doorAngleStoreId; + public float Angle => Mathf.Round(door.localRotation.eulerAngles.y); public float AnglePercent => Mathf.Clamp01(Angle / 90); public bool IsOpened => Angle > 25; + private void Reset() + { + doorAngleStoreId = Random.Range(0, 65535); +#if UNITY_EDITOR + EditorUtility.SetDirty(this); +#endif + } + private void FixedUpdate() { // 如果门打开,就关闭消息提示 messageHint.SetActive(! IsOpened); } + + private void Awake() + { + var angle = HermesOnDisk.HermesOnDisk.Float[(uint)doorAngleStoreId]; + door.localRotation = Quaternion.Euler(0, angle, 0); + } + + private void OnDisable() + { + HermesOnDisk.HermesOnDisk.Float[(uint)doorAngleStoreId] = Angle; + } } -- cgit