aboutsummaryrefslogtreecommitdiff
path: root/Assets/Scripts/FragmentRequire.cs
diff options
context:
space:
mode:
authorWeicao-CatilGrass <1992414357@qq.com>2026-05-30 19:35:16 +0800
committerWeicao-CatilGrass <1992414357@qq.com>2026-05-30 19:35:16 +0800
commit7735b716401f630697d5b02910d50dbf8f3416af (patch)
tree52d23e7e0434a569bbafdfca6ad196e3ef24af3f /Assets/Scripts/FragmentRequire.cs
parent4408cc53e044a9c649572991a764f46d247c67bf (diff)
正在编写动态场景加载
Diffstat (limited to 'Assets/Scripts/FragmentRequire.cs')
-rw-r--r--Assets/Scripts/FragmentRequire.cs46
1 files changed, 46 insertions, 0 deletions
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<SceneAsset> requiredScenes = new();
+
+ private BoxCollider _boxCollider;
+
+ private void Awake()
+ {
+ _boxCollider = GetComponent<BoxCollider>();
+ _boxCollider.isTrigger = true;
+ }
+
+ private void OnTriggerEnter(Collider other)
+ {
+ var sceneName = new List<string>();
+ 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);
+ }
+}