From 7735b716401f630697d5b02910d50dbf8f3416af Mon Sep 17 00:00:00 2001 From: Weicao-CatilGrass <1992414357@qq.com> Date: Sat, 30 May 2026 19:35:16 +0800 Subject: 正在编写动态场景加载 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scripts/FragmentRequire.cs | 46 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 Assets/Scripts/FragmentRequire.cs (limited to 'Assets/Scripts/FragmentRequire.cs') diff --git a/Assets/Scripts/FragmentRequire.cs b/Assets/Scripts/FragmentRequire.cs new file mode 100644 index 0000000..71ce602 --- /dev/null +++ b/Assets/Scripts/FragmentRequire.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEngine.SceneManagement; + +[RequireComponent(typeof(BoxCollider))] +[ExecuteAlways] +public class FragmentRequire : MonoBehaviour +{ + public List requiredScenes = new(); + + private BoxCollider _boxCollider; + + private void Awake() + { + _boxCollider = GetComponent(); + _boxCollider.isTrigger = true; + } + + private void OnTriggerEnter(Collider other) + { + var sceneName = new List(); + foreach (SceneAsset sceneAsset in requiredScenes) + sceneName.Add(sceneAsset.name); + FragmentManager.UpdateSceneRequirements(sceneName); + } + + private void Update() + { + _boxCollider.size = Vector3.one; + } + + private void OnDrawGizmos() + { + if (_boxCollider == null) return; + + var cs = _boxCollider.size; + var ts = Vector3.one; + var size = new Vector3(cs.x * ts.x, cs.y * ts.y, cs.z * ts.z); + + Gizmos.color = new Color(1f, 0.18f, 0.29f, 0.5f); + Gizmos.matrix = transform.localToWorldMatrix; + Gizmos.DrawCube(_boxCollider.center, size); + } +} -- cgit