diff --git a/Packages/Tools/Runtime/Data.meta b/Packages/Tools/Runtime/Data.meta new file mode 100644 index 0000000..3323c2f --- /dev/null +++ b/Packages/Tools/Runtime/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b7a42d086d2691b4690cdd3060fcfc06 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Tools/Runtime/Data/Data.cs b/Packages/Tools/Runtime/Data/Data.cs new file mode 100644 index 0000000..acd04dd --- /dev/null +++ b/Packages/Tools/Runtime/Data/Data.cs @@ -0,0 +1,13 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + /// + /// 数据 + /// + public abstract class Data where T : Data { + /// 可视化对象 + public DataPrefab visual; + } +} \ No newline at end of file diff --git a/Packages/Tools/Runtime/Data/Data.cs.meta b/Packages/Tools/Runtime/Data/Data.cs.meta new file mode 100644 index 0000000..72513fa --- /dev/null +++ b/Packages/Tools/Runtime/Data/Data.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6266364f7baf1e741b8951d0ae0a1608 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Tools/Runtime/Data/DataPrefab.cs b/Packages/Tools/Runtime/Data/DataPrefab.cs new file mode 100644 index 0000000..c01da77 --- /dev/null +++ b/Packages/Tools/Runtime/Data/DataPrefab.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + /// + /// 数据预制件 + /// + public abstract class DataPrefab : MonoBehaviour where T : Data { + /// 关联的数据 + protected T value; + + /// 关联的数据 + public virtual T Value => value; + /// 更新可视化内容 + public virtual void UpdateVisual(T value) => this.value = value; + } +} diff --git a/Packages/Tools/Runtime/Data/DataPrefab.cs.meta b/Packages/Tools/Runtime/Data/DataPrefab.cs.meta new file mode 100644 index 0000000..4350405 --- /dev/null +++ b/Packages/Tools/Runtime/Data/DataPrefab.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa7816f4efcec004e99b05e88149b6a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/Tools/Runtime/Data/DataVisual.cs b/Packages/Tools/Runtime/Data/DataVisual.cs new file mode 100644 index 0000000..951c922 --- /dev/null +++ b/Packages/Tools/Runtime/Data/DataVisual.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace MuHua { + /// + /// 数据可视化 + /// + public class DataVisual : SingleBehaviour> where T : Data { + /// 生成空间 + public Transform space; + /// 数据预制件 + public Transform prefab; + + /// 替换旧的 + protected override void Awake() => Replace(); + + /// 更新可视化内容 + public virtual void UpdateVisual(T data) { + Create(ref data.visual, prefab, space); + data.visual.UpdateVisual(data); + } + /// 释放可视化内容 + public virtual void ReleaseVisual(T data) { + if (data.visual != null) { Destroy(data.visual.gameObject); } + data.visual = null; + } + /// 创建可视化内容 + public static void Create(ref Type value, Transform original, Transform parent) { + if (value != null) { return; } + Transform temp = CreateTransform(original, parent); + value = temp.GetComponent(); + } + /// 创建Transform + public static Transform CreateTransform(Transform original, Transform parent) { + Transform temp = Transform.Instantiate(original, parent); + temp.gameObject.SetActive(true); + return temp; + } + } +} \ No newline at end of file diff --git a/Packages/Tools/Runtime/Data/DataVisual.cs.meta b/Packages/Tools/Runtime/Data/DataVisual.cs.meta new file mode 100644 index 0000000..bb8fb63 --- /dev/null +++ b/Packages/Tools/Runtime/Data/DataVisual.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aff4fda1c9fd8164384489f6750e34f4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: