1、编辑器窗口通用类 2、重写UI框架

This commit is contained in:
梦语 2024-10-27 04:03:15 +08:00
parent adfc36ae63
commit 121f879b97
77 changed files with 2010 additions and 505 deletions

View File

@ -0,0 +1,11 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="LanguageDetectionInspection" enabled="false" level="WARNING" enabled_by_default="false" />
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
<option name="processCode" value="true" />
<option name="processLiterals" value="true" />
<option name="processComments" value="true" />
</inspection_tool>
</profile>
</component>

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 7db7dcb21519b014b937f3997d53b813 guid: 38439f9695d9e604c8eac2afbbc761ab
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@ -0,0 +1,40 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ether
{
public abstract class OdinSubWindowBase
{
protected OdinSubWindowBase()
{
OnInit();
}
protected virtual void OnInit() { }
public abstract void OnShow();
public void OnGUI()
{
// 检查 Ctrl+S (Cmd+S on macOS)
Event e = Event.current;
if (e.type == EventType.KeyDown && (e.keyCode == KeyCode.S && (e.control || e.command)))
{
// 阻止默认的保存操作
e.Use();
// 执行自定义保存逻辑
Debug.Log("执行保存代码");
OnSave();
}
OnUpdata();
}
protected virtual void OnUpdata() { }
protected virtual void OnSave() { }
public virtual void OnClose() { }
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 370a46ff30cb18f4b896c9dd860070d1 guid: 0f3e9658633c21f4fbaea4e8e03ce4bf
MonoImporter: MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2

View File

@ -0,0 +1,98 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector.Editor;
using UnityEngine;
namespace Ether
{
public abstract class OdinWindowBase<T> : OdinMenuEditorWindow where T : OdinWindowBase<T>
{
protected OdinWindowBase()
{
OnInit();
}
protected abstract void OnInit();
protected bool SupportsMultiSelect = false; //允许多选
protected bool DrawSearchToolbar = false; //显示搜索框
protected List<(Type, OdinSubWindowBase)> SubWindows = new List<(Type, OdinSubWindowBase)>();
protected List<string> SubWindowNames = new List<string>();
private OdinSubWindowBase selectedSubWindow;
/// <summary>
/// 添加子界面
/// </summary>
/// <param name="windowName">子界面名称(列表中显示)</param>
/// <typeparam name="K">子界面类型</typeparam>
protected void AddSubWindow<K>(string windowName) where K : OdinSubWindowBase
{
Type type = typeof(K);
OdinSubWindowBase subWindow = (OdinSubWindowBase)Activator.CreateInstance(type);
SubWindowNames.Add(windowName);
SubWindows.Add((type, subWindow));
}
protected override OdinMenuTree BuildMenuTree()
{
var tree = new OdinMenuTree();
tree.Selection.SupportsMultiSelect = SupportsMultiSelect;
tree.Config.DrawSearchToolbar = DrawSearchToolbar;
for (int i = 0; i < SubWindows.Count; i++)
{
var subWindowItem = SubWindows[i];
if (subWindowItem.Item2 != null)
continue;
Type type = subWindowItem.Item1;
OdinSubWindowBase subWindow = (OdinSubWindowBase)Activator.CreateInstance(type);
subWindowItem.Item2 = subWindow;
}
for (int i = 0; i < SubWindows.Count; i++)
{
tree.Add(SubWindowNames[i], SubWindows[i].Item2);
}
tree.Selection.SelectionChanged += (type) =>
{
if (tree.Selection.SelectedValue == null)
{
return;
}
selectedSubWindow?.OnClose();
OdinSubWindowBase selectWindow = tree.Selection.SelectedValue as OdinSubWindowBase;
selectWindow.OnShow();
selectedSubWindow = selectWindow;
};
return tree;
}
protected override void OnImGUI()
{
base.OnImGUI();
if (this.MenuTree.Selection.SelectedValue == null)
{
return;
}
OdinSubWindowBase selectWindow = this.MenuTree.Selection.SelectedValue as OdinSubWindowBase;
selectWindow.OnGUI();
}
protected override void OnDestroy()
{
selectedSubWindow?.OnClose();
}
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: e1645e03649b6204396356c5c9285890 guid: f020120ab7ae12d4a9df026d34d0dee0
MonoImporter: MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2

View File

@ -1 +1 @@
{"framePrefabPath":"Resources/Prefabs/Frames","frameScriptPath":"Scripts/Frame","frameBaseScriptPath":"Scripts/AutoGenerated/FrameBase","componentTypeDic":{"BtnEx":"ButtonEx","Btn":"Btn","Image":"Image","Go":"GameObject","Trans":"Transform","Text":"TextMeshProUGUI","SRContent":"ScrollContent","ScrollRect":"ScrollRect","Animator":"Animator"}} {"framePrefabPath":"Resources/Prefabs/Frames","frameScriptPath":"Scripts/Frame","frameBaseScriptPath":"Scripts/AutoGenerated/FrameBase","componentTypeDic":{"BtnEx":"ButtonEx","Btn":"Button","Image":"Image","Go":"GameObject","Trans":"Transform","Text":"TextMeshProUGUI","SRContent":"ScrollContent","ScrollRect":"ScrollRect","Animator":"Animator"}}

View File

@ -45,7 +45,7 @@ namespace Ether
} }
} }
[Header("Frame路径设置")] [Title("Frame路径设置")]
[FolderPath(ParentFolder = "Assets"), PropertyOrder(0)] [FolderPath(ParentFolder = "Assets"), PropertyOrder(0)]
[OnValueChanged(nameof(OnFolderPathChanged))] [OnValueChanged(nameof(OnFolderPathChanged))]
@ -79,7 +79,7 @@ namespace Ether
[Space(20)] [Space(20)]
[Header("组件类型映射表")] [Title("组件类型映射表")]
[DictionaryDrawerSettings(KeyLabel = "组件简称", ValueLabel = "组件全称")] [DictionaryDrawerSettings(KeyLabel = "组件简称", ValueLabel = "组件全称")]
[ShowInInspector] [ShowInInspector]
[OnValueChanged(nameof(OnFolderPathChanged))] [OnValueChanged(nameof(OnFolderPathChanged))]
@ -96,7 +96,7 @@ namespace Ether
[Space(20)] [Space(20)]
[Header("Frame创建")] [Title("Frame创建")]
[LabelText("系统名称")] [LabelText("系统名称")]
[PropertyOrder(10)] [PropertyOrder(10)]
@ -166,7 +166,7 @@ namespace Ether
[Space(20)] [Space(20)]
[Header("Frame删除")] [Title("Frame删除")]
[LabelText("系统名称")] [LabelText("系统名称")]
[PropertyOrder(15)] [PropertyOrder(15)]

File diff suppressed because one or more lines are too long

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: aa1e7688246b43947beec4c37ffcf536 guid: 9aa2cc2c3feb8354a8ad165d024d4431
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@ -1,5 +1,6 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: de41a70ead12af544a4e99a925b269d2 guid: bb03254290073504b814eae95f4cae3c
folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:

View File

@ -0,0 +1,14 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ether
{
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
public class CenterAttribute : Attribute
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6f2722fe5debda44fbec9e1a13eadc10
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,56 @@
#if UNITY_EDITOR
using System;
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector.Editor;
using UnityEditor;
using UnityEngine;
namespace Ether
{
public class TextCenterAttributeDrawer : OdinAttributeDrawer<CenterAttribute>
{
protected override void DrawPropertyLayout(GUIContent label)
{
var smartValue = Property.ValueEntry.WeakSmartValue;
var type = Property.ValueEntry.BaseValueType;
var value = smartValue != null ? smartValue.ToString() : "null";
if (type.IsEnum)
{
InspectorNameAttribute attr = CommonTools.GetEnumFieldAttribute<InspectorNameAttribute>(type, (int)smartValue);
value = attr != null ? attr.displayName : value;
}
// 开始一个新的垂直布局组
GUILayout.BeginVertical();
// 添加一个灵活的空间,使内容在垂直方向上居中
GUILayout.FlexibleSpace();
// 开始一个新的水平布局组
GUILayout.BeginHorizontal();
// 添加一个灵活的空间,使文本在水平方向上居中
GUILayout.FlexibleSpace();
// 绘制标签
GUILayout.Label(value);
// 再添加一个灵活的空间
GUILayout.FlexibleSpace();
// 结束水平布局组
GUILayout.EndHorizontal();
// 再添加一个灵活的空间
GUILayout.FlexibleSpace();
// 结束垂直布局组
GUILayout.EndVertical();
// 调用下一个绘制器,继续绘制属性
//this.CallNextDrawer(label);
}
}
}
#endif

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: cf5796f355b772641b69ae6199087e49
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ee8993b08c864cd58951f7dffd735ccb
timeCreated: 1729969199

View File

@ -0,0 +1,29 @@
namespace Ether
{
public abstract class DataBase
{
private DictionaryEx<string, object> allDataDic = new DictionaryEx<string, object>();
public bool AddData(string name, object value)
{
if (allDataDic.ContainsKey(name))
{
return false;
}
allDataDic.Add(name, value);
return true;
}
public T GetData<T>(string name)
{
if (allDataDic.TryGetValue(name, out object value))
{
return (T)value;
}
return default;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c37d8592f453482b879d3f4e5b95e025
timeCreated: 1729969248

View File

@ -77,8 +77,9 @@ namespace Ether
public new void Remove(TKey key) public new void Remove(TKey key)
{ {
if (base.ContainsKey(key)) if (!base.ContainsKey(key))
{ return;
base.Remove(key); base.Remove(key);
var pair = GetKeyValuePair(key); var pair = GetKeyValuePair(key);
if (pair != null) if (pair != null)
@ -86,27 +87,25 @@ namespace Ether
allData.Remove(pair); allData.Remove(pair);
} }
} }
}
public void SetAsLastSibling(TKey key) public void SetAsLastSibling(TKey key)
{ {
var pair = GetKeyValuePair(key); var pair = GetKeyValuePair(key);
if (pair != null) if (pair == null)
{ return;
Remove(key); Remove(key);
Add(key, pair.Value); Add(key, pair.Value);
} }
}
public void SetAsFirstSibling(TKey key) public void SetAsFirstSibling(TKey key)
{ {
var pair = GetKeyValuePair(key); var pair = GetKeyValuePair(key);
if (pair != null) if (pair == null)
{ return;
allData.Remove(pair); allData.Remove(pair);
allData.Insert(0, pair); allData.Insert(0, pair);
}
} }
public new TValue this[TKey key] public new TValue this[TKey key]
@ -124,10 +123,7 @@ namespace Ether
return default; return default;
} }
set set => Add(key, value);
{
Add(key, value);
}
} }
public TValue this[int index] public TValue this[int index]
@ -149,7 +145,7 @@ namespace Ether
public SerializeKeyValue<TKey, TValue> GetKeyValuePair(TKey key) public SerializeKeyValue<TKey, TValue> GetKeyValuePair(TKey key)
{ {
return allData.Where(s => s.Key.CompareTo(key) == 0).FirstOrDefault(); return allData.FirstOrDefault(s => s.Key.CompareTo(key) == 0);
} }

View File

@ -22,79 +22,75 @@ namespace Ether
{ {
public virtual string PrefabPath { get; } public virtual string PrefabPath { get; }
public bool IsActive { get; set; } = false; public FrameData FrameData { get; private set; }
public UIElement UIElement { get; private set; }
public FrameData frameData; public DictionaryEx<string, FrameBase> subFrames = new DictionaryEx<string, FrameBase>();
public FrameBase() protected FrameBase()
{ {
UIElement = new UIElement(); FrameData = new FrameData();
UIElementAttribute elementAttribute = GetType().GetCustomAttribute<UIElementAttribute>(); UIElementAttribute elementAttribute = GetType().GetCustomAttribute<UIElementAttribute>();
UIElement.prefabPath = (elementAttribute != null && !string.IsNullOrEmpty(elementAttribute.framePrefabPath)) ? elementAttribute.framePrefabPath : PrefabPath; FrameData.PrefabPath = (elementAttribute != null && !string.IsNullOrEmpty(elementAttribute.framePrefabPath)) ? elementAttribute.framePrefabPath : PrefabPath;
UIElement.tier = elementAttribute == null ? FrameTier.Middle : elementAttribute.tier; FrameData.Tier = elementAttribute == null ? FrameTier.Middle : elementAttribute.tier;
UIElement.frameType = elementAttribute == null ? FrameType.Frame : elementAttribute.frameType; FrameData.FrameType = elementAttribute == null ? FrameType.Frame : elementAttribute.frameType;
UIElement.frameName = GetType().Name; FrameData.FrameName = GetType().Name;
} }
protected virtual void OnInit() { } #region
protected virtual void OnOpenAnim() { UIElement.Root?.SetActive(true); }
public virtual void OnOpenFrame() { }
public virtual void OnCloseFrame() { }
public virtual void OnSubscribe() { }
public virtual void OnUnSubscribe() { }
public virtual void OnFocus(PointerEventData pointerEventData) { }
public virtual void OnUpdate(float deltaTime) { }
public void SetVisible(bool isShow, Action callback = null, FrameData openFrameData = null)
{
IsActive = isShow;
if (isShow)
{
frameData = openFrameData;
OnShow(callback);
UIElement.Root.transform.SetAsLastSibling();
}
else
{
OnHide(callback);
}
}
private void OnShow(Action callback)
{
Debug.Log($"界面{UIElement.frameName}打开");
BindRoot();
OnOpenAnim();
OnInit();
OnSubscribe();
OnOpenFrame();
callback?.Invoke();
}
private void OnHide(Action callback)
{
Debug.Log($"界面{UIElement.frameName}关闭");
OnUnSubscribe();
OnCloseFrame();
UIElement.Root.SetVisible(false, () =>
{
callback?.Invoke();
GameObject.Destroy(UIElement.Root);
UIElement.Root = null;
childFindCache.Clear();
});
}
/// <summary> /// <summary>
/// 绑定UIRoot /// 绑定UIRoot
/// </summary> /// </summary>
public void BindRoot() private void BindRoot()
{ {
UIElement.Root = UIManager.Inst.GetFrameRes(this); FrameData.Root = UIManager.Inst.GetFrameRes(this);
Debug.Log($"Frame:{UIElement.frameName} Root初始化成功。。。。{UIElement.Root.name}"); Debug.Log($"Frame:{FrameData.FrameName} Root初始化成功。。。。{FrameData.Root.name}");
OnClick(UIElement.Root, OnFocus); OnClick(FrameData.Root, OnFocus);
}
protected virtual void OnInit() { }
protected virtual void OnOpenAnim() { FrameData.Root?.SetActive(true); }
protected virtual void OnShow() { }
protected virtual void OnClose() { }
protected virtual void OnSubscribe() { }
protected virtual void OnUnSubscribe() { }
protected virtual void OnFocus(PointerEventData pointerEventData) { }
public virtual void OnUpdate(float deltaTime) { }
#endregion
/// <summary>
/// 打开界面
/// </summary>
public void ShowFrame(OpenFrameData openFrameData, Action callback = null)
{
FrameData.OpenFrameData = openFrameData;
FrameData.Root.transform.SetAsLastSibling();
Debug.Log($"界面{FrameData.FrameName}打开");
BindRoot();
OnOpenAnim();
OnInit();
OnSubscribe();
OnShow();
OnFocus(null);
callback?.Invoke();
}
/// <summary>
/// 关闭界面
/// </summary>
public void CloseFrame(Action callback = null)
{
Debug.Log($"界面{FrameData.FrameName}关闭");
OnUnSubscribe();
OnClose();
FrameData.Root.SetVisible(false, () =>
{
GameObject.Destroy(FrameData.Root);
FrameData.Root = null;
childFindCache.Clear();
callback?.Invoke();
});
} }
/// <summary> /// <summary>
@ -102,72 +98,54 @@ namespace Ether
/// </summary> /// </summary>
public virtual void Back() public virtual void Back()
{ {
UIManager.Inst.BackFrame(UIElement.frameName, UIElement.frameType); UIManager.Inst.BackFrame(FrameData.FrameName, FrameData.FrameType);
} }
public void Close() public void Close()
{ {
SwitchHideFrame(UIElement.frameName); //如果是子界面的话使用父界面的关闭
if (FrameData.OpenFrameData != null && FrameData.OpenFrameData.ParentFrameData != null)
{
FrameBase parentFrameBase = UIManager.Inst.GetFrame(FrameData.OpenFrameData.ParentFrameData.parentFrameName);
parentFrameBase.CloseSubFrame(FrameData.FrameName);
return;
} }
//========================================= 工具 ============================================ foreach (var framePair in subFrames)
#region
/// <summary>
/// 切换到另个界面
/// </summary>
protected void SwitchFrame<T>() where T : FrameBase
{ {
string targetViewName = typeof(T).Name; UIManager.Inst.CloseFrame(framePair.Key);
UIManager.Inst.CloseFrame(UIElement.frameName, () => }
{ subFrames.Clear();
UIManager.Inst.OpenFrame(targetViewName); UIManager.Inst.CloseFrame(FrameData.FrameName);
});
//UIMgr.Ins.SwitchPanel(SwitchPanelType.SwitchShowAndHide, targetViewName, frameName);
} }
/// <summary> #region
/// 切换到另个界面
/// </summary> protected void OpenSubFrame<T>(OpenFrameData openFrameData, Action callback = null) where T : FrameBase
protected void SwitchFrame(string targetViewName)
{ {
UIManager.Inst.CloseFrame(UIElement.frameName, () => if (openFrameData == null || openFrameData.ParentFrameData == null)
{ {
UIManager.Inst.OpenFrame(targetViewName); Debug.LogError("打开子界面需要FrameData,并给FrameData中的ParentData赋值");
}); return;
//UIMgr.Ins.SwitchPanel(SwitchPanelType.SwitchShowAndHide, targetViewName, frameName); }
UIManager.Inst.OpenFrame<T>(openFrameData, callback);
T frame = UIManager.Inst.GetFrame<T>();
subFrames.TryAdd(typeof(T).Name, frame);
} }
/// <summary> public void CloseSubFrame<T>(Action callback = null) where T : FrameBase
/// 打开另个界面,不隐藏自己
/// </summary>
protected void SwitchOnlyFrame<T>() where T : FrameBase
{ {
string targetViewName = typeof(T).Name; CloseSubFrame(typeof(T).Name, callback);
UIManager.Inst.OpenFrame(targetViewName);
//UIMgr.Ins.SwitchPanel(SwitchPanelType.SwitchOnlyShow, targetViewName);
} }
/// <summary> public void CloseSubFrame(string subFrameName, Action callback = null)
/// 打开另个界面,不隐藏自己
/// </summary>
protected void SwitchOnlyFrame(string targetViewName)
{ {
UIManager.Inst.OpenFrame(targetViewName); subFrames.Remove(subFrameName);
//UIMgr.Ins.SwitchPanel(SwitchPanelType.SwitchOnlyShow, targetViewName); UIManager.Inst.CloseFrame(subFrameName, callback);
} }
/// <summary>
/// 隐藏界面某个界面
/// </summary>
protected void SwitchHideFrame(string targetViewName)
{
UIManager.Inst.CloseFrame(targetViewName);
//UIMgr.Ins.SwitchPanel(SwitchPanelType.SwitchOnlyHide, targetViewName);
}
#endregion #endregion
//========================================= 事件工具 ============================================
#region #region
/// <summary> /// <summary>
/// 子物体缓存 /// 子物体缓存
@ -220,7 +198,7 @@ namespace Ether
return tempTrans; return tempTrans;
} }
Transform[] trans = UIElement.Root.GetComponentsInChildren<Transform>(true); Transform[] trans = FrameData.Root.GetComponentsInChildren<Transform>(true);
foreach (Transform tran in trans) foreach (Transform tran in trans)
{ {
@ -253,7 +231,7 @@ namespace Ether
} }
//Debug.Log("FindChild:" + path + " Root:" + Root); //Debug.Log("FindChild:" + path + " Root:" + Root);
return AddChildCache(path, UIElement.Root.transform.Find(path)); return AddChildCache(path, FrameData.Root.transform.Find(path));
} }
/// <summary> /// <summary>
@ -266,6 +244,9 @@ namespace Ether
} }
#endregion #endregion
//========================================= 事件工具 ============================================
#region #region
protected void OnBtnLeftClick(string path, Action action) protected void OnBtnLeftClick(string path, Action action)
{ {
@ -538,8 +519,8 @@ namespace Ether
/// UI物体拖拽 /// UI物体拖拽
/// </summary> /// </summary>
/// <param name="obj">拖拽的物体</param> /// <param name="obj">拖拽的物体</param>
/// <param name="dragEndCallBack">拖拽结束回调</param> /// <param name="dragEndcallback">拖拽结束回调</param>
internal void OnDragMove(GameObject obj, Action<PointerEventData> dragEndCallBack = null) internal void OnDragMove(GameObject obj, Action<PointerEventData> dragEndcallback = null)
{ {
RectTransform canvas = UIManager.Inst.MainCanvas.GetComponent<RectTransform>(); ; //得到canvas的ugui坐标 RectTransform canvas = UIManager.Inst.MainCanvas.GetComponent<RectTransform>(); ; //得到canvas的ugui坐标
RectTransform objRect = obj.GetComponent<RectTransform>(); //得到图片的ugui坐标 RectTransform objRect = obj.GetComponent<RectTransform>(); //得到图片的ugui坐标
@ -579,7 +560,7 @@ namespace Ether
AddTriggersListener(obj, EventTriggerType.EndDrag, (BaseEventData) => AddTriggersListener(obj, EventTriggerType.EndDrag, (BaseEventData) =>
{ {
dragEndCallBack?.Invoke((PointerEventData)BaseEventData); dragEndcallback?.Invoke((PointerEventData)BaseEventData);
}); });
} }

View File

@ -8,28 +8,49 @@ namespace Ether
{ {
public class FrameData public class FrameData
{ {
private DictionaryEx<string, object> allDataDic = new DictionaryEx<string, object>(); /// <summary>
/// 界面名称
/// </summary>
public string FrameName;
/// <summary>
/// Prefab路径
/// </summary>
public string PrefabPath;
/// <summary>
/// 界面层级
/// </summary>
public FrameTier Tier = FrameTier.Middle;
/// <summary>
/// 界面类型
/// </summary>
public FrameType FrameType = FrameType.Frame;
/// <summary>
/// 界面物体
/// </summary>
public GameObject Root;
public OpenFrameData OpenFrameData;
public bool Add(string name, object value)
{
if (allDataDic.ContainsKey(name))
{
return false;
} }
allDataDic.Add(name, value); public class OpenFrameData : DataBase
return true;
}
public T Get<T>(string name)
{ {
if (allDataDic.TryGetValue(name, out object value)) public ParentFrameData ParentFrameData { get; private set; } //父界面的信息
public void SetParentFrameData(string parentFrameName, Transform parent)
{ {
return (T)value; ParentFrameData = new ParentFrameData()
{
parentFrameName = parentFrameName,
parent = parent
};
} }
return default;
} }
public class ParentFrameData
{
public string parentFrameName;
public Transform parent;
} }
} }

View File

@ -30,8 +30,16 @@ namespace Ether
public enum FrameType public enum FrameType
{ {
Frame = 0, //全屏界面 Frame = 0, //全屏界面
Window = 1, //窗口界面 Pop = 1, //弹窗界面
Pop = 2, //弹窗界面 Tips = 2, //提示
Tips = 3, //提示 }
/// <summary>
/// 界面等级
/// </summary>
public enum FrameLevel
{
Main = 0, //主界面
Sub = 1, //子界面
} }
} }

View File

@ -1,39 +0,0 @@
/********************************************************************
: UIElement.cs
:
: 1982614048@qq.com
: 2024/03/29 17:28:19
:
: 2024/04/03 16:00:47
:
*********************************************************************/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Ether
{
public class UIElement
{
/// <summary>
/// 界面名称
/// </summary>
public string frameName;
/// <summary>
/// Prefab路径
/// </summary>
public string prefabPath;
/// <summary>
/// 界面层级
/// </summary>
public FrameTier tier = FrameTier.Middle;
/// <summary>
/// 界面类型
/// </summary>
public FrameType frameType = FrameType.Frame;
/// <summary>
/// 界面物体
/// </summary>
public GameObject Root;
}
}

View File

@ -25,11 +25,8 @@ namespace Ether
List<Transform> tierList = new List<Transform>(); //所有的层级 List<Transform> tierList = new List<Transform>(); //所有的层级
//所有打开的界面 //所有打开的界面
private DictionaryEx<string, FrameBase> allOpenFrames = new DictionaryEx<string, FrameBase>(); private DictionaryEx<string, FrameBase> allOpenFrames = new DictionaryEx<string, FrameBase>();
//所有界面需要保存的数据
private DictionaryEx<string, FrameData> allFrameData = new DictionaryEx<string, FrameData>();
private LinkedSequence<string> frameOpenStack = new LinkedSequence<string>(); private LinkedSequence<string> frameOpenStack = new LinkedSequence<string>();
private LinkedSequence<string> windowOpenStack = new LinkedSequence<string>();
public override void Init() public override void Init()
{ {
@ -123,10 +120,7 @@ namespace Ether
foreach (var viewPair in allOpenFrames) foreach (var viewPair in allOpenFrames)
{ {
FrameBase frame = viewPair.Value; FrameBase frame = viewPair.Value;
if (frame.IsActive) frame?.OnUpdate(deltaTime);
{
frame.OnUpdate(deltaTime);
}
} }
} }
@ -134,20 +128,19 @@ namespace Ether
/// 打开界面 /// 打开界面
/// </summary> /// </summary>
/// <param name="framName"></param> /// <param name="framName"></param>
public void OpenFrame(string framName, FrameData openFrameData = null, Action callback = null) public void OpenFrame(string framName, OpenFrameData openFrameData = null, Action callback = null)
{ {
Type frameType = CommonTools.GetType(framName); Type frameType = CommonTools.GetType(framName);
OpenFrame(framName, frameType, callback, openFrameData); OpenFrame(frameType, openFrameData, callback);
} }
/// <summary> /// <summary>
/// 打开界面 /// 打开界面
/// </summary> /// </summary>
/// <typeparam name="T"></typeparam> /// <typeparam name="T"></typeparam>
public void OpenFrame<T>(FrameData openFrameData = null, Action callback = null) where T : FrameBase public void OpenFrame<T>(OpenFrameData openFrameData = null, Action callback = null) where T : FrameBase
{ {
string name = typeof(T).Name; OpenFrame(typeof(T), openFrameData, callback);
OpenFrame(name, typeof(T), callback, openFrameData);
} }
/// <summary> /// <summary>
@ -155,13 +148,15 @@ namespace Ether
/// </summary> /// </summary>
/// <param name="name"></param> /// <param name="name"></param>
/// <param name="type"></param> /// <param name="type"></param>
private void OpenFrame(string name, Type type, Action callback = null, FrameData openFrameData = null) private void OpenFrame(Type type, OpenFrameData openFrameData = null, Action callback = null)
{ {
string name = type.Name;
FrameBase frame; FrameBase frame;
if (allOpenFrames.ContainsKey(name)) if (allOpenFrames.ContainsKey(name))
{ {
frame = allOpenFrames[name]; frame = allOpenFrames[name];
frame.SetVisible(false); frame.CloseFrame();
} }
else else
{ {
@ -169,28 +164,9 @@ namespace Ether
allOpenFrames.Add(name, frame); allOpenFrames.Add(name, frame);
} }
if (openFrameData == null) frame.ShowFrame(openFrameData, callback);
{
if (allFrameData.ContainsKey(name))
{
openFrameData = allFrameData[name];
}
}
else
{
if (allFrameData.ContainsKey(name))
{
allFrameData[name] = openFrameData;
}
else
{
allFrameData.Add(name, openFrameData);
}
}
frame.SetVisible(true, callback, openFrameData); switch (frame.FrameData.FrameType)
switch (frame.UIElement.frameType)
{ {
case FrameType.Frame: case FrameType.Frame:
frameOpenStack.Add(name); frameOpenStack.Add(name);
@ -201,21 +177,6 @@ namespace Ether
} }
Debug.Log(str); Debug.Log(str);
//全屏界面打开时关闭所有窗口界面
foreach (var node in windowOpenStack)
{
CloseFrame(node.Value);
}
break;
case FrameType.Window:
windowOpenStack.Add(name);
string winStr = "当前打开的窗口 ";
foreach (var node in windowOpenStack)
{
winStr += node.Value + " ";
}
Debug.Log(winStr);
break; break;
case FrameType.Pop: case FrameType.Pop:
break; break;
@ -244,7 +205,7 @@ namespace Ether
if (allOpenFrames.ContainsKey(frameName)) if (allOpenFrames.ContainsKey(frameName))
{ {
FrameBase frame = allOpenFrames[frameName]; FrameBase frame = allOpenFrames[frameName];
frame.SetVisible(false, callback); frame.CloseFrame(callback);
allOpenFrames.Remove(frameName); allOpenFrames.Remove(frameName);
} }
@ -260,15 +221,22 @@ namespace Ether
public GameObject GetFrameRes<T>(T frame) where T : FrameBase public GameObject GetFrameRes<T>(T frame) where T : FrameBase
{ {
Type viewType = typeof(T); Type viewType = typeof(T);
UIElement element = frame.UIElement; if (frame.FrameData != null && !string.IsNullOrEmpty(frame.FrameData.PrefabPath))
if (element != null && !string.IsNullOrEmpty(element.prefabPath))
{ {
GameObject obj = LoaderTools.LoadGameObjectAndInstantiateAsync(element.prefabPath, GetTier(element.tier)); Transform parent;
if (frame.FrameData.OpenFrameData != null && frame.FrameData.OpenFrameData.ParentFrameData != null
&& frame.FrameData.OpenFrameData.ParentFrameData.parent != null)
{
parent = frame.FrameData.OpenFrameData.ParentFrameData.parent;
}else{
parent = GetTier(frame.FrameData.Tier);
}
GameObject obj = LoaderTools.LoadGameObjectAndInstantiateAsync(frame.FrameData.PrefabPath, parent);
if (obj == null) if (obj == null)
{ {
Debug.LogErrorFormat("加载Frame Prefab失败:{0}", element.prefabPath); Debug.LogErrorFormat("加载Frame Prefab失败:{0}", frame.FrameData.PrefabPath);
return null; return null;
} }
@ -292,12 +260,17 @@ namespace Ether
public T GetFrame<T>() where T : FrameBase public T GetFrame<T>() where T : FrameBase
{ {
string name = typeof(T).Name; string name = typeof(T).Name;
if (allOpenFrames.TryGetValue(name, out FrameBase frameBase))
{ FrameBase frameBase = allOpenFrames[name];
return frameBase as T; return frameBase as T;
} }
return null; /// <summary>
/// 获取界面
/// </summary>
public FrameBase GetFrame(string frameName)
{
return allOpenFrames.GetValueOrDefault(frameName);
} }
/// <summary> /// <summary>
@ -308,16 +281,6 @@ namespace Ether
return GetFrame<T>() != null; return GetFrame<T>() != null;
} }
/// <summary>
/// 窗口聚焦
/// </summary>
public void FocusWindow(string name)
{
var node = windowOpenStack[name];
node.SetAsLastSibling();
}
/// <summary> /// <summary>
/// 返回 /// 返回
/// </summary> /// </summary>
@ -332,10 +295,8 @@ namespace Ether
OpenFrame(frameOpenStack.Last().Value); OpenFrame(frameOpenStack.Last().Value);
} }
break; break;
case FrameType.Window:
frameOpenStack.Remove(name);
break;
case FrameType.Pop: case FrameType.Pop:
frameOpenStack.Remove(name);
break; break;
default: default:
break; break;
@ -349,7 +310,6 @@ namespace Ether
{ {
tierList.Clear(); tierList.Clear();
frameOpenStack.Clear(); frameOpenStack.Clear();
windowOpenStack.Clear();
foreach (var frameNodePair in allOpenFrames) foreach (var frameNodePair in allOpenFrames)
{ {
frameNodePair.Value.Close(); frameNodePair.Value.Close();

View File

@ -0,0 +1,7 @@
namespace Ether
{
public static class UIUtil
{
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7199adb958b24a5797ce5930c0834d9d
timeCreated: 1729970369

View File

@ -182,9 +182,14 @@ namespace Ether
/// <param name="enumValue"></param> /// <param name="enumValue"></param>
/// <returns></returns> /// <returns></returns>
public static K GetEnumFieldAttribute<T, K>(int enumValue) where T : Enum where K : Attribute public static K GetEnumFieldAttribute<T, K>(int enumValue) where T : Enum where K : Attribute
{
return GetEnumFieldAttribute<K>(typeof(T), enumValue);
}
public static K GetEnumFieldAttribute<K>(Type type, int enumValue) where K : Attribute
{ {
//反射获取字段 //反射获取字段
System.Reflection.FieldInfo[] fields = typeof(T).GetFields(); System.Reflection.FieldInfo[] fields = type.GetFields();
System.Type attType = typeof(K); System.Type attType = typeof(K);
for (int i = 0; i < fields.Length; i++) for (int i = 0; i < fields.Length; i++)
{ {

File diff suppressed because one or more lines are too long

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 9a5d0567944e3dc42a5edc674d753579
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 162a289e6a408d74a9f9d6c378d73c47
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 5f90836a61e34c64096ebf9ae8bb41e0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -3,8 +3,9 @@
--- !u!114 &11400000 --- !u!114 &11400000
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0} m_GameObject: {fileID: 0}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
@ -913,7 +914,7 @@ MonoBehaviour:
- Type: 7 - Type: 7
Value: 85.381004 Value: 85.381004
- Type: 4 - Type: 4
Value: 58.173435 Value: 58.333332
- Type: 3 - Type: 3
Value: 100 Value: 100
- Type: 2 - Type: 2

View File

@ -3,8 +3,9 @@
--- !u!114 &11400000 --- !u!114 &11400000
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0} m_GameObject: {fileID: 0}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
@ -15,6 +16,7 @@ MonoBehaviour:
SerializedFormat: 2 SerializedFormat: 2
SerializedBytes: SerializedBytes:
ReferencedUnityObjects: ReferencedUnityObjects:
- {fileID: 11400000, guid: 6ab32b89bfa24794cbad9dc3ace0c02b, type: 2}
- {fileID: 11400000, guid: da06c416056e169499ec57af28fffbfe, type: 2} - {fileID: 11400000, guid: da06c416056e169499ec57af28fffbfe, type: 2}
- {fileID: 11400000, guid: 98efc1438872f0b458fefa279e5ee972, type: 2} - {fileID: 11400000, guid: 98efc1438872f0b458fefa279e5ee972, type: 2}
SerializedBytesString: SerializedBytesString:
@ -206,8 +208,8 @@ MonoBehaviour:
Entry: 3 Entry: 3
Data: 0 Data: 0
- Name: Item - Name: Item
Entry: 6 Entry: 10
Data: Data: 0
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
@ -411,7 +413,7 @@ MonoBehaviour:
Data: 1 Data: 1
- Name: Item - Name: Item
Entry: 10 Entry: 10
Data: 0 Data: 1
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:
@ -555,7 +557,7 @@ MonoBehaviour:
Data: 0 Data: 0
- Name: Item - Name: Item
Entry: 10 Entry: 10
Data: 1 Data: 2
- Name: - Name:
Entry: 8 Entry: 8
Data: Data:

View File

@ -3,8 +3,9 @@
--- !u!114 &11400000 --- !u!114 &11400000
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0} m_GameObject: {fileID: 0}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
@ -23,7 +24,9 @@ MonoBehaviour:
ItemRarity: Infinity ItemRarity: Infinity
Durability: Infinity Durability: Infinity
Modifiers: Modifiers:
stats: [] stats:
- Type: 0
Value: 0
BaseAttackDamage: Infinity BaseAttackDamage: Infinity
BaseAttackSpeed: Infinity BaseAttackSpeed: Infinity
BaseCritChance: Infinity BaseCritChance: Infinity

View File

Before

Width:  |  Height:  |  Size: 376 KiB

After

Width:  |  Height:  |  Size: 376 KiB

View File

@ -93,6 +93,32 @@ TextureImporter:
ignorePlatformSupport: 0 ignorePlatformSupport: 0
androidETC2FallbackOverride: 0 androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0 forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet: spriteSheet:
serializedVersion: 2 serializedVersion: 2
sprites: [] sprites: []

View File

@ -1,5 +1,6 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 9d8b8023ef3e92847b012cfd9523c894 guid: ab13d253cf933374ab72bf1b623980dd
folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: cb5d46a7234fd254ba130a0d61661dab
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: c1ce7833be15fc944a8fd850459f4b64
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: 893235023e7cf574d93f14e47d0f6b1d
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 6faa0a12b29d371419af68189fcf8363
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: 1a83f0977cb37f7419ad261dc4f20d56
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 87d36525542f5eb419fdb09f2db7aa09
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: a99d746ecb7d5be42b5f891b6dc810d3
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 4e12ba0fa7c23ed4087711ab5816b523
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: 17b9ff598d3981a4da2008b01196f21a
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 23d526a1a6e5bf24599621cde6f1ae4c
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: bf6f72a515033f847bd2e0a49980ffc2
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 6ad25f9eeeaa2404283b2842f99c499e
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: 09a03d2b759d8e94282bf809a89a2e4a
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: d51043b17c27d174c8da63eaaef7e795
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: 22f30194770f8f248a25a6939d03e97d
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 9b8203a727e1d1c4dae9bb18cb42c34a
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View File

@ -0,0 +1,88 @@
fileFormatVersion: 2
guid: 3141cfb3eefbcb34e90d4fce7b277be0
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: -1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: 16
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- serializedVersion: 2
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 17d4589db1d61244b9f384006fdd0960
vertices: []
indices:
edges: []
weights: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: defd54e0a6147144aa915a89e4f913d2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,396 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1703080056135353327
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5211158822168324289}
m_Layer: 5
m_Name: MenuFrame
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5211158822168324289
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1703080056135353327}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4966303923125748504}
- {fileID: 5802661914892923637}
- {fileID: 76701579739485789}
- {fileID: 4750869553657473706}
- {fileID: 8841272054739042360}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2031502759202179248
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4966303923125748504}
- component: {fileID: 1651226042617246323}
- component: {fileID: 5204481291985637621}
m_Layer: 5
m_Name: Image
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4966303923125748504
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2031502759202179248}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5211158822168324289}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 1920, y: 1080}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1651226042617246323
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2031502759202179248}
m_CullTransparentMesh: 1
--- !u!114 &5204481291985637621
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2031502759202179248}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: cfcd81c399c33e0448b4c4d2d905eb89, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3187158525571320440
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8841272054739042360}
- component: {fileID: 5583933044651279577}
- component: {fileID: 490261191520837589}
m_Layer: 5
m_Name: <Text>MenuName
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8841272054739042360
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3187158525571320440}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5211158822168324289}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: -809.9, y: 458.7}
m_SizeDelta: {x: 178.1032, y: 81.8121}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5583933044651279577
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3187158525571320440}
m_CullTransparentMesh: 1
--- !u!114 &490261191520837589
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3187158525571320440}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 0
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u53CB\u4EBA"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 5260a5b886a7afb42923003dcf1df014, type: 2}
m_sharedMaterial: {fileID: 7042218265555741552, guid: 5260a5b886a7afb42923003dcf1df014, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4292798183
m_fontColor: {r: 0.9058824, g: 0.90196085, b: 0.8705883, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 40
m_fontSizeBase: 40
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &4372829903781501600
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5802661914892923637}
- component: {fileID: 5459735667113016427}
- component: {fileID: 7219598427896711725}
m_Layer: 5
m_Name: Bg
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5802661914892923637
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4372829903781501600}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5211158822168324289}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5459735667113016427
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4372829903781501600}
m_CullTransparentMesh: 1
--- !u!114 &7219598427896711725
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4372829903781501600}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 0c83a04b3389e144cabe25c2e0c6fa60, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4431744563231483228
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 76701579739485789}
m_Layer: 5
m_Name: SubFrameRoot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &76701579739485789
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4431744563231483228}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5211158822168324289}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &6082798616992106121
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4750869553657473706}
m_Layer: 5
m_Name: Menu
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4750869553657473706
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6082798616992106121}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5211158822168324289}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -76.244995}
m_SizeDelta: {x: 0, y: 152.4899}
m_Pivot: {x: 0.5, y: 0.5}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 458a37930a6ee1945a411ddb31500ebc guid: e579b2d5fb2cb1e44823098701b8ecc6
PrefabImporter: PrefabImporter:
externalObjects: {} externalObjects: {}
userData: userData:

View File

@ -1,113 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1703080056135353327
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5211158822168324289}
m_Layer: 0
m_Name: TempFrame
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5211158822168324289
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1703080056135353327}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5802661914892923637}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &4372829903781501600
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5802661914892923637}
- component: {fileID: 5459735667113016427}
- component: {fileID: 7219598427896711725}
m_Layer: 0
m_Name: Bg
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5802661914892923637
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4372829903781501600}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5211158822168324289}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5459735667113016427
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4372829903781501600}
m_CullTransparentMesh: 1
--- !u!114 &7219598427896711725
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4372829903781501600}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1

View File

@ -0,0 +1,19 @@
//=================================================== 代码自动创建,禁止手动修改 ===================================================
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
namespace Ether
{
public class MenuFrameBase : FrameBase
{
public override string PrefabPath { get; } = "Prefabs/Frames/Menu/MenuFrame";
protected override void OnInit()
{
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 412a5f9f3cccb62499ad98541e3fda28
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,22 +1,103 @@
using System;
using System.Collections.Generic; using System.Collections.Generic;
using Sirenix.OdinInspector; using Sirenix.OdinInspector;
using TableConfig;
using UnityEditor;
using UnityEngine;
namespace Ether namespace Ether
{ {
public class PropItemTableWindow public class PropItemTableWindow : OdinSubWindowBase
{ {
[LabelText("道具列表")] [LabelText("道具列表")]
[DisableContextMenu(true, true)]
[TableList(IsReadOnly = true, AlwaysExpanded = true), ShowInInspector] [TableList(IsReadOnly = true, AlwaysExpanded = true), ShowInInspector]
public readonly List<PropItemTableEditorPreview> propItemTableEditorPreviewList; private List<PropItemTableEditorPreview> propItemTableEditorPreviewList;
public PropItemTableWindow() protected override void OnInit()
{ {
propItemTableEditorPreviewList = new List<PropItemTableEditorPreview>(); propItemTableEditorPreviewList = new List<PropItemTableEditorPreview>();
} }
public override void OnShow()
{
propItemTableEditorPreviewList.Clear();
foreach (var propItemCfg in TableProvider.Tables.TbPropItem.DataList)
{
propItemTableEditorPreviewList.Add(new PropItemTableEditorPreview(propItemCfg));
}
} }
protected override void OnSave()
{
Debug.Log("Custom save action performed.");
// 在这里添加你的保存逻辑
}
}
[DisableContextMenu(true, true)]
public class PropItemTableEditorPreview public class PropItemTableEditorPreview
{ {
[DisableContextMenu]
[TableColumnWidth(50, false)]
[HorizontalGroup("Id"), HideLabel]
[ShowInInspector]
[DisplayAsString]
[LabelWidth(20)]
[Center]
public int Id;
[DisableContextMenu]
[HorizontalGroup("图标"), HideLabel]
[TableColumnWidth(50, false)]
[ShowInInspector, PreviewField(45, ObjectFieldAlignment.Center)]
[ReadOnly]
public Texture Icon;
[DisableContextMenu]
[HorizontalGroup("名称"), HideLabel]
[TableColumnWidth(150, false)]
[DisplayAsString]
[Center]
public string Name;
[DisableContextMenu]
[HorizontalGroup("类型"), HideLabel]
[TableColumnWidth(150, false)]
[DisplayAsString]
[Center]
public PropItemType Type;
[DisableContextMenu]
[HorizontalGroup("品质"), HideLabel]
[TableColumnWidth(50, false)]
[DisplayAsString]
[Center]
public int Quality;
[DisableContextMenu]
[HorizontalGroup("描述"), HideLabel]
[TableColumnWidth(0)]
//[TextArea(2,100)]
//[ReadOnly]
[Center]
public string Description = "这是个道具描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述描述 ";
public PropItemTableEditorPreview(PropItemTable propItemCfg)
{
if (!string.IsNullOrEmpty(propItemCfg.Icon))
{
Icon = LoaderTools.LoadAsset<Sprite>("Art/UI/Icon/" + propItemCfg.Icon).texture;
//Icon = AssetDatabase.LoadAssetAtPath<Texture>("Resources/" + );
}
Id = propItemCfg.Id;
Name = propItemCfg.Name;
Type = propItemCfg.Type;
Quality = propItemCfg.Quality;
Description = propItemCfg.Description;
}
} }
} }

View File

@ -1,41 +1,26 @@
 
using Sirenix.OdinInspector.Editor;
using System.Collections;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using Sirenix.OdinInspector.Demos.RPGEditor;
using Sirenix.Utilities.Editor; using Sirenix.Utilities.Editor;
using UnityEditor; using UnityEditor;
using UnityEngine; using UnityEngine;
namespace Ether namespace Ether
{ {
public class TableEditorWindow : OdinMenuEditorWindow public class TableEditorWindow : OdinWindowBase<TableEditorWindow>
{ {
[MenuItem("配置/表格配置 %t")] [MenuItem("配置/表格配置 %t")]
private static void OpenWindow() private static void OpenWindow()
{ {
var window = GetWindow<TableEditorWindow>(); var window = GetWindow<TableEditorWindow>();
window.titleContent = new GUIContent("表格配置"); window.titleContent = new GUIContent("表格配置");
TableProvider.ResetCounter();
} }
private PropItemTableWindow propItemTableWindow; protected override void OnInit()
protected override OdinMenuTree BuildMenuTree()
{ {
var tree = new OdinMenuTree(); DrawSearchToolbar = true;
tree.Selection.SupportsMultiSelect = false; AddSubWindow<PropItemTableWindow>("道具配置");
tree.Config.DrawSearchToolbar = true; AddSubWindow<PropItemTableWindow>("道具配置/道具列表");
if (propItemTableWindow == null)
{
propItemTableWindow = new PropItemTableWindow();
}
tree.Add("道具配置", propItemTableWindow);
tree.Add("道具配置/道具列表", propItemTableWindow);
return tree;
} }
protected override void OnBeginDrawEditors() protected override void OnBeginDrawEditors()
@ -60,4 +45,5 @@ namespace Ether
SirenixEditorGUI.EndHorizontalToolbar(); SirenixEditorGUI.EndHorizontalToolbar();
} }
} }
} }

View File

@ -29,5 +29,13 @@ namespace Ether
{ {
tables = new Tables(file => JSON.Parse(File.ReadAllText($"{tableDir}/{file}.json"))); tables = new Tables(file => JSON.Parse(File.ReadAllText($"{tableDir}/{file}.json")));
} }
/// <summary>
/// 重置数据
/// </summary>
public static void ResetCounter()
{
tables = null;
}
} }
} }

View File

@ -15,7 +15,7 @@ namespace Ether
private SubtitlesRequestInfo curSubTitleInfo; private SubtitlesRequestInfo curSubTitleInfo;
public override void OnOpenFrame() protected override void OnShow()
{ {
_GoTempChoiceBtn.SetActive(false); _GoTempChoiceBtn.SetActive(false);
_BtnExBgNext.OnClick.AddListener(() => _BtnExBgNext.OnClick.AddListener(() =>
@ -24,7 +24,7 @@ namespace Ether
}); });
} }
public override void OnSubscribe() protected override void OnSubscribe()
{ {
EventCenter.AddListener<SubtitlesRequestInfo>("OnSubtitlesRequest", OnSubtitlesRequest); EventCenter.AddListener<SubtitlesRequestInfo>("OnSubtitlesRequest", OnSubtitlesRequest);
EventCenter.AddListener<MultipleChoiceRequestInfo>("OnMultipleChoiceRequest", OnMultipleChoiceRequest); EventCenter.AddListener<MultipleChoiceRequestInfo>("OnMultipleChoiceRequest", OnMultipleChoiceRequest);
@ -73,7 +73,7 @@ namespace Ether
} }
public override void OnUnSubscribe() protected override void OnUnSubscribe()
{ {
EventCenter.RemoveListener<SubtitlesRequestInfo>("OnSubtitlesRequest", OnSubtitlesRequest); EventCenter.RemoveListener<SubtitlesRequestInfo>("OnSubtitlesRequest", OnSubtitlesRequest);
EventCenter.RemoveListener<MultipleChoiceRequestInfo>("OnMultipleChoiceRequest", OnMultipleChoiceRequest); EventCenter.RemoveListener<MultipleChoiceRequestInfo>("OnMultipleChoiceRequest", OnMultipleChoiceRequest);

View File

@ -10,12 +10,12 @@ namespace Ether
[UIElement(FrameTier.MaxTop)] [UIElement(FrameTier.MaxTop)]
public class LoadingFrame : LoadingFrameBase public class LoadingFrame : LoadingFrameBase
{ {
public override void OnOpenFrame() protected override void OnShow()
{ {
_AnimatorCrossfade.SetTrigger("FadeEnter"); _AnimatorCrossfade.SetTrigger("FadeEnter");
} }
public override void OnSubscribe() protected override void OnSubscribe()
{ {
EventCenter.AddListener("CutSceneSucc", CutSceneSucc); EventCenter.AddListener("CutSceneSucc", CutSceneSucc);
} }
@ -25,7 +25,7 @@ namespace Ether
_AnimatorCrossfade.SetTrigger("FadeExit"); _AnimatorCrossfade.SetTrigger("FadeExit");
} }
public override void OnUnSubscribe() protected override void OnUnSubscribe()
{ {
EventCenter.RemoveListener("CutSceneSucc", CutSceneSucc); EventCenter.RemoveListener("CutSceneSucc", CutSceneSucc);
} }

View File

@ -18,7 +18,7 @@ namespace Ether
{ {
public class LoginFrame : LoginFrameBase public class LoginFrame : LoginFrameBase
{ {
public override void OnSubscribe() protected override void OnSubscribe()
{ {
//EventCenter.AddListener<EtherInputType, int>(EtherInputType.Up, OnInputUpEvent); //EventCenter.AddListener<EtherInputType, int>(EtherInputType.Up, OnInputUpEvent);
//EventCenter.AddListener<EtherInputType, int>(EtherInputType.Down, OnInputDownEvent); //EventCenter.AddListener<EtherInputType, int>(EtherInputType.Down, OnInputDownEvent);
@ -26,7 +26,7 @@ namespace Ether
//EventCenter.AddListener<EtherInputType, int>(EtherInputType.Right, OnInputRightEvent); //EventCenter.AddListener<EtherInputType, int>(EtherInputType.Right, OnInputRightEvent);
} }
public override void OnUnSubscribe() protected override void OnUnSubscribe()
{ {
//EventCenter.RemoveListener<EtherInputType, int>(EtherInputType.Up, OnInputUpEvent); //EventCenter.RemoveListener<EtherInputType, int>(EtherInputType.Up, OnInputUpEvent);
//EventCenter.RemoveListener<EtherInputType, int>(EtherInputType.Down, OnInputDownEvent); //EventCenter.RemoveListener<EtherInputType, int>(EtherInputType.Down, OnInputDownEvent);
@ -54,12 +54,12 @@ namespace Ether
// Debug.Log("RightRightRightRightRight:" + state); // Debug.Log("RightRightRightRightRight:" + state);
//} //}
public override void OnOpenFrame() protected override void OnShow()
{ {
_BtnExContinuGame.OnClick.AddListener(() => _BtnExContinuGame.OnClick.AddListener(() =>
{ {
Debug.Log("点击继续游戏"); Debug.Log("点击继续游戏");
SwitchOnlyFrame<LoadingFrame>(); UIManager.Inst.OpenFrame<LoadingFrame>();
SceneSystemManager.Inst.LoadScene("Login"); SceneSystemManager.Inst.LoadScene("Login");
}); });

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9230110546c3934419e8a64dde179843
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -5,7 +5,7 @@ using UnityEngine;
namespace Ether namespace Ether
{ {
public class SettingFrame : SettingFrameBase public class MenuFrame : MenuFrameBase
{ {
} }

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2e28bc3f1a703824aa943f8a5d8319d7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -50,5 +50,13 @@
"SortIndex": 2 "SortIndex": 2
} }
], ],
"Joystick": [] "Joystick": [
{
"KeyCode": 0,
"KeyType": 0,
"KeyDescription": null,
"Event": 0,
"SortIndex": 0
}
]
} }

View File

@ -4,8 +4,8 @@
"Name": "金币", "Name": "金币",
"Type": 1, "Type": 1,
"Description": "这是纯金的哦", "Description": "这是纯金的哦",
"Icon": "", "Icon": "potionGreen",
"Quality": 1, "Quality": 5,
"Occupy": false "Occupy": false
}, },
{ {
@ -13,8 +13,8 @@
"Name": "钻石", "Name": "钻石",
"Type": 1, "Type": 1,
"Description": "贼贵的钻石哦", "Description": "贼贵的钻石哦",
"Icon": "", "Icon": "woodSword",
"Quality": 1, "Quality": 3,
"Occupy": false "Occupy": false
} }
] ]

View File

@ -8,9 +8,9 @@
: :
*********************************************************************/ *********************************************************************/
using Sirenix.OdinInspector;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using Sirenix.OdinInspector;
using Unity.VisualScripting; using Unity.VisualScripting;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;

Binary file not shown.