修改工具包
This commit is contained in:
@@ -1,60 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace MuHua {
|
|
||||||
/// <summary>
|
|
||||||
/// 资源模块
|
|
||||||
/// </summary>
|
|
||||||
public class ModuleAssets<Data> : Module<ModuleAssets<Data>> {
|
|
||||||
protected List<Data> datas = new List<Data>();
|
|
||||||
|
|
||||||
/// <summary> 更改事件 </summary>
|
|
||||||
public virtual event Action<ModuleAssets<Data>> OnChange;
|
|
||||||
/// <summary> 数据列表 </summary>
|
|
||||||
public virtual List<Data> Datas => datas;
|
|
||||||
/// <summary> 数据计数 </summary>
|
|
||||||
public virtual int Count => Datas.Count;
|
|
||||||
/// <summary> 数据操作 </summary
|
|
||||||
public virtual Data this[int index] => Datas[index];
|
|
||||||
|
|
||||||
/// <summary> 添加数据 </summary>
|
|
||||||
public virtual void Add(Data data) { Datas.Add(data); OnChange?.Invoke(this); }
|
|
||||||
/// <summary> 添加数据 </summary>
|
|
||||||
public virtual void Add(IList<Data> data) { Datas.AddRange(data); OnChange?.Invoke(this); }
|
|
||||||
/// <summary> 删除数据 </summary>
|
|
||||||
public virtual void Remove(Data data) { Datas.Remove(data); OnChange?.Invoke(this); }
|
|
||||||
/// <summary> 清除数据 </summary>
|
|
||||||
public virtual void Clear() { Datas.Clear(); OnChange?.Invoke(this); }
|
|
||||||
|
|
||||||
/// <summary> 保存数据 </summary>
|
|
||||||
public virtual void Save() { throw new NotImplementedException(); }
|
|
||||||
/// <summary> 加载数据 </summary>
|
|
||||||
public virtual void Load() { throw new NotImplementedException(); }
|
|
||||||
|
|
||||||
/// <summary> 循环列表 </summary>
|
|
||||||
public virtual void ForEach(Action<Data> action) => Datas.ForEach(action);
|
|
||||||
}
|
|
||||||
/// <summary>
|
|
||||||
/// 资源模块工具
|
|
||||||
/// </summary>
|
|
||||||
public static class AssetsTool {
|
|
||||||
/// <summary> 头尾循环标准化索引 </summary>
|
|
||||||
public static Data LoopIndex<Data>(this ModuleAssets<Data> assets, int index) {
|
|
||||||
return assets[LoopIndex(index, assets.Count)];
|
|
||||||
}
|
|
||||||
/// <summary> 头尾循环标准化索引 </summary>
|
|
||||||
public static Data LoopIndex<Data>(this List<Data> list, int index) {
|
|
||||||
return list[LoopIndex(index, list.Count)];
|
|
||||||
}
|
|
||||||
/// <summary> 头尾循环标准化索引 </summary>
|
|
||||||
public static Data LoopIndex<Data>(this Data[] array, int index) {
|
|
||||||
return array[LoopIndex(index, array.Length)];
|
|
||||||
}
|
|
||||||
/// <summary> 头尾循环标准化索引 </summary>
|
|
||||||
public static int LoopIndex(int index, int maxIndex) {
|
|
||||||
return index % maxIndex;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f240e58226b9d1440b23f97be93c4f00
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace MuHua {
|
|
||||||
/// <summary>
|
|
||||||
/// 数据
|
|
||||||
/// </summary>
|
|
||||||
public abstract class ModuleData<T> where T : ModuleData<T> {
|
|
||||||
/// <summary> 可视化对象 </summary>
|
|
||||||
public ModulePrefab<T> visual;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 6266364f7baf1e741b8951d0ae0a1608
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace MuHua {
|
|
||||||
/// <summary>
|
|
||||||
/// 事件处理器
|
|
||||||
/// </summary>
|
|
||||||
public class ModuleHandle<Data> : Module<ModuleAssets<Data>> {
|
|
||||||
/// <summary> 数据 </summary>
|
|
||||||
protected Data value;
|
|
||||||
|
|
||||||
/// <summary> 当前数据 </summary>
|
|
||||||
public virtual Data Current => value;
|
|
||||||
/// <summary> 当前数据是否有效 </summary>
|
|
||||||
public virtual bool IsValid => Current != null;
|
|
||||||
|
|
||||||
/// <summary> 改变当前数据 Event </summary>
|
|
||||||
public virtual event Action<Data> OnChange;
|
|
||||||
/// <summary> 改变当前数据 </summary>
|
|
||||||
public virtual void Change() => OnChange?.Invoke(value);
|
|
||||||
/// <summary> 改变当前数据 </summary>
|
|
||||||
public virtual void Change(Data value) { this.value = value; Change(); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace MuHua {
|
|
||||||
/// <summary>
|
|
||||||
/// 数据预制件
|
|
||||||
/// </summary>
|
|
||||||
public abstract class ModulePrefab<T> : MonoBehaviour where T : ModuleData<T> {
|
|
||||||
/// <summary> 关联的数据 </summary>
|
|
||||||
protected T value;
|
|
||||||
|
|
||||||
/// <summary> 关联的数据 </summary>
|
|
||||||
public virtual T Value => value;
|
|
||||||
/// <summary> 更新可视化内容 </summary>
|
|
||||||
public virtual void UpdateVisual(T value) => this.value = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: fa7816f4efcec004e99b05e88149b6a0
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -6,25 +6,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 数据可视化
|
/// 数据可视化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ModuleVisual<T> : ModuleSingle<ModuleVisual<T>> where T : ModuleData<T> {
|
public class ModuleVisual {
|
||||||
/// <summary> 生成空间 </summary>
|
|
||||||
public Transform space;
|
|
||||||
/// <summary> 数据预制件 </summary>
|
|
||||||
public Transform prefab;
|
|
||||||
|
|
||||||
/// <summary> 替换旧的 </summary>
|
|
||||||
protected override void Awake() => Replace();
|
|
||||||
|
|
||||||
/// <summary> 更新可视化内容 </summary>
|
|
||||||
public virtual void UpdateVisual(T data) {
|
|
||||||
Create(ref data.visual, prefab, space);
|
|
||||||
data.visual.UpdateVisual(data);
|
|
||||||
}
|
|
||||||
/// <summary> 释放可视化内容 </summary>
|
|
||||||
public virtual void ReleaseVisual(T data) {
|
|
||||||
if (data.visual != null) { Destroy(data.visual.gameObject); }
|
|
||||||
data.visual = null;
|
|
||||||
}
|
|
||||||
/// <summary> 创建可视化内容 </summary>
|
/// <summary> 创建可视化内容 </summary>
|
||||||
public static void Create<Type>(ref Type value, Transform original, Transform parent) {
|
public static void Create<Type>(ref Type value, Transform original, Transform parent) {
|
||||||
if (value != null) { return; }
|
if (value != null) { return; }
|
||||||
@@ -37,5 +19,9 @@ namespace MuHua {
|
|||||||
temp.gameObject.SetActive(true);
|
temp.gameObject.SetActive(true);
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
/// <summary> 删除可视化内容 </summary>
|
||||||
|
public static void Remove<Type>(Type visual) where Type : Component {
|
||||||
|
if (visual != null) { GameObject.Destroy(visual.gameObject); }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.EventSystems;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 检测鼠标是否在UI上
|
||||||
|
/// </summary>
|
||||||
|
public class PointerOverUIObject : MonoBehaviour {
|
||||||
|
|
||||||
|
private static bool isValid;
|
||||||
|
|
||||||
|
public static bool IsValid => isValid;
|
||||||
|
|
||||||
|
private void Update() {
|
||||||
|
#if UNITY_STANDALONE
|
||||||
|
//电脑平台
|
||||||
|
isValid = EventSystem.current.IsPointerOverGameObject();
|
||||||
|
#elif UNITY_WEBGL
|
||||||
|
//WebGL平台
|
||||||
|
isValid = EventSystem.current.IsPointerOverGameObject();
|
||||||
|
#elif UNITY_ANDROID
|
||||||
|
//安卓平台
|
||||||
|
isValid = EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId);
|
||||||
|
#elif UNITY_IOS
|
||||||
|
//苹果平台
|
||||||
|
isValid = EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 7e27b368a7807c74987bd3cb5287968a
|
guid: cfb91cad7f01d164d9e35b15f9b2c7c8
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
Reference in New Issue
Block a user