1
This commit is contained in:
@@ -1,10 +1,14 @@
|
|||||||
@import url("unity-theme://default");
|
@import url("unity-theme://default");
|
||||||
|
|
||||||
@import url("/Assets/MuHua/UITool/FontLibrary/Fonts.uss");
|
@import url("/Assets/MuHua/UITool/FontLibrary/Fonts.uss");
|
||||||
@import url("/Assets/MuHua/UITool/UIFloatingWindow/FloatingWindow.uss");
|
@import url("/Assets/MuHua/UITool/USS/InputField.uss");
|
||||||
@import url("/Assets/MuHua/UITool/UIScroller/Scroller.uss");
|
@import url("/Assets/MuHua/UITool/USS/Scroller.uss");
|
||||||
@import url("/Assets/MuHua/UITool/UIScrollView/ScrollView.uss");
|
@import url("/Assets/MuHua/UITool/USS/ScrollView.uss");
|
||||||
@import url("/Assets/MuHua/UITool/UISlider/Slider.uss");
|
@import url("/Assets/MuHua/UITool/USS/Slider.uss");
|
||||||
|
@import url("/Assets/MuHua/UITool/USS/Window.uss");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: e7cdf28a5161c094ea27a8b5ad54d741
|
guid: 79a59b79f3428b449916c4b458f73e78
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
.input-field {
|
||||||
|
flex-direction: row;
|
||||||
|
background-color: rgba(255, 255, 255, 0.5);
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-shrink: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-field-label {
|
||||||
|
flex-grow: 0;
|
||||||
|
flex-basis: auto;
|
||||||
|
flex-shrink: 0;
|
||||||
|
min-width: 150px;
|
||||||
|
-unity-text-align: middle-left;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
padding-left: 5px;
|
||||||
|
width: auto;
|
||||||
|
background-color: rgba(0, 0, 0, 0);
|
||||||
|
margin-top: 0;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-field-box {
|
||||||
|
background-color: rgb(255, 255, 255);
|
||||||
|
width: auto;
|
||||||
|
flex-grow: 1;
|
||||||
|
flex-shrink: 1;
|
||||||
|
flex-basis: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-field-text {
|
||||||
|
-unity-text-align: middle-left;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
padding-right: 0;
|
||||||
|
padding-left: 7px;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
.input-field-text-d {
|
||||||
|
-unity-font-style: italic;
|
||||||
|
color: rgba(27, 27, 27, 0.6);
|
||||||
|
}
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: e586d71f691bf1a4bab490af1c2cfe7f
|
guid: fc0932c888e56eb429d27f412df5a822
|
||||||
ScriptedImporter:
|
ScriptedImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
+2
@@ -38,6 +38,8 @@
|
|||||||
top: 0;
|
top: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
|
width: 30px;
|
||||||
|
background-color: rgb(255, 255, 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
.scrollview-vertical-scroller-dragger {
|
.scrollview-vertical-scroller-dragger {
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: bd2ae276ee0cc884cbe88f423b8f35fd
|
guid: 238a02b461e75d141acabaee7cc80c87
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 3bf3dbd8db1a17e4c8e7c99b5fadee02
|
guid: 819f5ae75816a96458f0a8d347fbb1a2
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../../../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
|
||||||
|
<MuHua.UIFloatField />
|
||||||
|
</ui:UXML>
|
||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 43fe5b5fa3469a245854d8ca70e39edf
|
guid: be4dcb8701971d14c8fc03653aba6348
|
||||||
ScriptedImporter:
|
ScriptedImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../../../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
|
||||||
|
<MuHua.UILongField />
|
||||||
|
</ui:UXML>
|
||||||
+2
-3
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: a1f3f61784a9b574bb5b683d542e7d39
|
guid: 6d1adb0fd3a339c4eac7384e14326bcc
|
||||||
ScriptedImporter:
|
ScriptedImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -7,5 +7,4 @@ ScriptedImporter:
|
|||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
||||||
script: {fileID: 12388, guid: 0000000000000000e000000000000000, type: 0}
|
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
disableValidation: 0
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../../../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
|
||||||
|
<Style src="project://database/Assets/MuHua/UITool/USS/InputField.uss?fileID=7433441132597879392&guid=fc0932c888e56eb429d27f412df5a822&type=3#InputField" />
|
||||||
|
<MuHua.UITextField />
|
||||||
|
</ui:UXML>
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f70e5bac0c1484f4798573018fc0bb83
|
||||||
|
ScriptedImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
+4
-4
@@ -21,11 +21,11 @@
|
|||||||
<ui:Button text="Button" parse-escape-sequences="true" display-tooltip-when-elided="true" />
|
<ui:Button text="Button" parse-escape-sequences="true" display-tooltip-when-elided="true" />
|
||||||
</ui:VisualElement>
|
</ui:VisualElement>
|
||||||
</ui:VisualElement>
|
</ui:VisualElement>
|
||||||
<ui:VisualElement name="ScrollerHorizontal" class="scroller-horizontal scrollview-horizontal-scroller">
|
<ui:VisualElement name="ScrollerHorizontal" class="scrollview-horizontal-scroller">
|
||||||
<ui:VisualElement name="Dragger" class="scroller-horizontal-dragger scrollview-horizontal-scroller-dragger" />
|
<ui:VisualElement name="Dragger" class="scrollview-horizontal-scroller-dragger" />
|
||||||
</ui:VisualElement>
|
</ui:VisualElement>
|
||||||
<ui:VisualElement name="ScrollerVertical" class="scroller-vertical scrollview-vertical-scroller">
|
<ui:VisualElement name="ScrollerVertical" class="scrollview-vertical-scroller">
|
||||||
<ui:VisualElement name="Dragger" class="scroller-vertical-dragger scrollview-vertical-scroller-dragger" />
|
<ui:VisualElement name="Dragger" class="scrollview-vertical-scroller-dragger" />
|
||||||
</ui:VisualElement>
|
</ui:VisualElement>
|
||||||
</ui:VisualElement>
|
</ui:VisualElement>
|
||||||
</ui:UXML>
|
</ui:UXML>
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 6d6bffb6d06d8af47a714ca6aca9a0a6
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4e1b362a28ce4c04babda53ffbecf64e
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
VisualElement {}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../../../UIElementsSchema/UIElements.xsd" editor-extension-mode="False">
|
|
||||||
<Style src="project://database/Assets/UI%20Toolkit/GlobalPage/GlobalPage.uss?fileID=7433441132597879392&guid=e586d71f691bf1a4bab490af1c2cfe7f&type=3#GlobalPage" />
|
|
||||||
</ui:UXML>
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0659231a661d8314794c049dab0cdb39
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
@import url("/Packages/com.muhua.uicontrol/Assets/Themes/DefaultRuntimeTheme.tss");
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c2293d2090267954bb2e45486f1a6fc9
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
+1
-1
@@ -6,7 +6,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 单例基类
|
/// 单例基类
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Single<T> where T : Single<T>, new() {
|
public class Module<T> where T : Module<T>, new() {
|
||||||
/// <summary> 模块单例 </summary>
|
/// <summary> 模块单例 </summary>
|
||||||
public static T I => Instantiate();
|
public static T I => Instantiate();
|
||||||
|
|
||||||
+3
-3
@@ -7,11 +7,11 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 资源模块
|
/// 资源模块
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Assets<Data> : Single<Assets<Data>> {
|
public class ModuleAssets<Data> : Module<ModuleAssets<Data>> {
|
||||||
protected List<Data> datas = new List<Data>();
|
protected List<Data> datas = new List<Data>();
|
||||||
|
|
||||||
/// <summary> 更改事件 </summary>
|
/// <summary> 更改事件 </summary>
|
||||||
public virtual event Action<Assets<Data>> OnChange;
|
public virtual event Action<ModuleAssets<Data>> OnChange;
|
||||||
/// <summary> 数据列表 </summary>
|
/// <summary> 数据列表 </summary>
|
||||||
public virtual List<Data> Datas => datas;
|
public virtual List<Data> Datas => datas;
|
||||||
/// <summary> 数据计数 </summary>
|
/// <summary> 数据计数 </summary>
|
||||||
@@ -41,7 +41,7 @@ namespace MuHua {
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class AssetsTool {
|
public static class AssetsTool {
|
||||||
/// <summary> 头尾循环标准化索引 </summary>
|
/// <summary> 头尾循环标准化索引 </summary>
|
||||||
public static Data LoopIndex<Data>(this Assets<Data> assets, int index) {
|
public static Data LoopIndex<Data>(this ModuleAssets<Data> assets, int index) {
|
||||||
return assets[LoopIndex(index, assets.Count)];
|
return assets[LoopIndex(index, assets.Count)];
|
||||||
}
|
}
|
||||||
/// <summary> 头尾循环标准化索引 </summary>
|
/// <summary> 头尾循环标准化索引 </summary>
|
||||||
+2
-2
@@ -6,8 +6,8 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 数据
|
/// 数据
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class Data<T> where T : Data<T> {
|
public abstract class ModuleData<T> where T : ModuleData<T> {
|
||||||
/// <summary> 可视化对象 </summary>
|
/// <summary> 可视化对象 </summary>
|
||||||
public DataPrefab<T> visual;
|
public ModulePrefab<T> visual;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -7,7 +7,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 事件处理器
|
/// 事件处理器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Handle<Data> : Single<Assets<Data>> {
|
public class ModuleHandle<Data> : Module<ModuleAssets<Data>> {
|
||||||
/// <summary> 数据 </summary>
|
/// <summary> 数据 </summary>
|
||||||
protected Data value;
|
protected Data value;
|
||||||
|
|
||||||
+1
-1
@@ -6,7 +6,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 数据预制件
|
/// 数据预制件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class DataPrefab<T> : MonoBehaviour where T : Data<T> {
|
public abstract class ModulePrefab<T> : MonoBehaviour where T : ModuleData<T> {
|
||||||
/// <summary> 关联的数据 </summary>
|
/// <summary> 关联的数据 </summary>
|
||||||
protected T value;
|
protected T value;
|
||||||
|
|
||||||
+1
-1
@@ -6,7 +6,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 单例行为
|
/// 单例行为
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class SingleBehaviour<T> : MonoBehaviour where T : SingleBehaviour<T> {
|
public abstract class ModuleSingle<T> : MonoBehaviour where T : ModuleSingle<T> {
|
||||||
/// <summary> 模块单例 </summary>
|
/// <summary> 模块单例 </summary>
|
||||||
public static T I => instance;
|
public static T I => instance;
|
||||||
/// <summary> 模块单例 </summary>
|
/// <summary> 模块单例 </summary>
|
||||||
+1
-1
@@ -6,7 +6,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 数据可视化
|
/// 数据可视化
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DataVisual<T> : SingleBehaviour<DataVisual<T>> where T : Data<T> {
|
public class ModuleVisual<T> : ModuleSingle<ModuleVisual<T>> where T : ModuleData<T> {
|
||||||
/// <summary> 生成空间 </summary>
|
/// <summary> 生成空间 </summary>
|
||||||
public Transform space;
|
public Transform space;
|
||||||
/// <summary> 数据预制件 </summary>
|
/// <summary> 数据预制件 </summary>
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: cf2bc427dc33d6249adc8ab937d37331
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
+2
-5
@@ -8,7 +8,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// UI项
|
/// UI项
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class UIItem<Data> {
|
public abstract class ModuleUIItem<Data> : ModuleUIPanel {
|
||||||
/// <summary> 选择事件 </summary>
|
/// <summary> 选择事件 </summary>
|
||||||
public static event Action<Data> OnSelect;
|
public static event Action<Data> OnSelect;
|
||||||
/// <summary> 触发事件 </summary>
|
/// <summary> 触发事件 </summary>
|
||||||
@@ -16,12 +16,9 @@ namespace MuHua {
|
|||||||
|
|
||||||
/// <summary> 绑定的数据 </summary>
|
/// <summary> 绑定的数据 </summary>
|
||||||
public readonly Data value;
|
public readonly Data value;
|
||||||
/// <summary> 绑定的元素 </summary>
|
|
||||||
public readonly VisualElement element;
|
|
||||||
/// <summary> UI项 </summary>
|
/// <summary> UI项 </summary>
|
||||||
public UIItem(Data value, VisualElement element) {
|
public ModuleUIItem(Data value, VisualElement element) : base(element) {
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.element = element;
|
|
||||||
OnSelect += UIItem_OnSelect;
|
OnSelect += UIItem_OnSelect;
|
||||||
}
|
}
|
||||||
|
|
||||||
+5
-7
@@ -6,22 +6,20 @@ using UnityEngine.UIElements;
|
|||||||
|
|
||||||
namespace MuHua {
|
namespace MuHua {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// UI容器
|
/// UI项容器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UIContainer<Item, Data> where Item : UIItem<Data> {
|
public class ModuleUIItems<Item, Data> : ModuleUIPanel where Item : ModuleUIItem<Data> {
|
||||||
public readonly VisualElement container;
|
|
||||||
public readonly VisualTreeAsset templateAsset;
|
public readonly VisualTreeAsset templateAsset;
|
||||||
public readonly Func<Data, VisualElement, Item> generate;
|
public readonly Func<Data, VisualElement, Item> generate;
|
||||||
public List<Item> uiItems = new List<Item>();
|
public List<Item> uiItems = new List<Item>();
|
||||||
/// <summary> UI容器 </summary>
|
/// <summary> UI容器 </summary>
|
||||||
public UIContainer(VisualElement container, VisualTreeAsset templateAsset, Func<Data, VisualElement, Item> generate) {
|
public ModuleUIItems(VisualElement element, VisualTreeAsset templateAsset, Func<Data, VisualElement, Item> generate) : base(element) {
|
||||||
this.container = container;
|
|
||||||
this.templateAsset = templateAsset;
|
this.templateAsset = templateAsset;
|
||||||
this.generate = generate;
|
this.generate = generate;
|
||||||
}
|
}
|
||||||
/// <summary> 释放资源 </summary>
|
/// <summary> 释放资源 </summary>
|
||||||
public void Release() {
|
public void Release() {
|
||||||
container.Clear();
|
element.Clear();
|
||||||
uiItems.ForEach(obj => obj.Release());
|
uiItems.ForEach(obj => obj.Release());
|
||||||
uiItems = new List<Item>();
|
uiItems = new List<Item>();
|
||||||
}
|
}
|
||||||
@@ -34,7 +32,7 @@ namespace MuHua {
|
|||||||
public void Create(Data data) {
|
public void Create(Data data) {
|
||||||
VisualElement element = templateAsset.Instantiate();
|
VisualElement element = templateAsset.Instantiate();
|
||||||
Item item = generate(data, element);
|
Item item = generate(data, element);
|
||||||
container.Add(item.element);
|
this.element.Add(item.element);
|
||||||
uiItems.Add(item);
|
uiItems.Add(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
namespace MuHua {
|
||||||
|
/// <summary>
|
||||||
|
/// 页面模块
|
||||||
|
/// </summary>
|
||||||
|
public class ModuleUIPage : MonoBehaviour {
|
||||||
|
/// <summary> 绑定文档 </summary>
|
||||||
|
public UIDocument document;
|
||||||
|
/// <summary> 根目录文档 </summary>
|
||||||
|
public VisualElement root => document.rootVisualElement;
|
||||||
|
/// <summary> 添加UI元素 </summary>
|
||||||
|
public void Add(VisualElement child) => root.Add(child);
|
||||||
|
/// <summary> 查询UI元素 </summary>
|
||||||
|
public T Q<T>(string name = null, string className = null) where T : VisualElement => root.Q<T>(name, className);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a20e816476c4c5d4b83e112be2e08697
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
namespace MuHua {
|
||||||
|
/// <summary>
|
||||||
|
/// UI控件
|
||||||
|
/// </summary>
|
||||||
|
public class ModuleUIPanel {
|
||||||
|
/// <summary> 绑定的元素 </summary>
|
||||||
|
public readonly VisualElement element;
|
||||||
|
/// <summary> UI控件 </summary>
|
||||||
|
public ModuleUIPanel(VisualElement element) => this.element = element;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 97e1bf60274de61419b2d9588340cafa
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 93ea492ab6f026841bfee78f2f1c99fa
|
guid: 90a36026f648a6f45add234bc15d5548
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
namespace MuHua {
|
||||||
|
public class UIFloatField : FloatField {
|
||||||
|
public new class UxmlFactory : UxmlFactory<UIFloatField, UxmlTraits> { }
|
||||||
|
public new class UxmlTraits : FloatField.UxmlTraits { }
|
||||||
|
public VisualElement inputElement;
|
||||||
|
public VisualElement textElement;
|
||||||
|
public UIFloatField() {
|
||||||
|
ClearClassList();
|
||||||
|
AddToClassList("input-field");
|
||||||
|
|
||||||
|
labelElement.ClearClassList();
|
||||||
|
labelElement.AddToClassList("unity-text-element");
|
||||||
|
labelElement.AddToClassList("input-field-label");
|
||||||
|
|
||||||
|
inputElement = this.Q<VisualElement>("unity-text-input");
|
||||||
|
inputElement.ClearClassList();
|
||||||
|
inputElement.AddToClassList("input-field-box");
|
||||||
|
|
||||||
|
textElement = inputElement.Q<VisualElement>("");
|
||||||
|
textElement.ClearClassList();
|
||||||
|
textElement.AddToClassList("unity-text-element");
|
||||||
|
textElement.AddToClassList("input-field-text");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7046acdb2e5ef0c458969a4022ee9ab4
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
namespace MuHua {
|
||||||
|
public class UILongField : LongField {
|
||||||
|
public new class UxmlFactory : UxmlFactory<UILongField, UxmlTraits> { }
|
||||||
|
public new class UxmlTraits : LongField.UxmlTraits { }
|
||||||
|
public UILongField() {
|
||||||
|
ClearClassList();
|
||||||
|
AddToClassList("input-field");
|
||||||
|
|
||||||
|
labelElement.ClearClassList();
|
||||||
|
labelElement.AddToClassList("unity-text-element");
|
||||||
|
labelElement.AddToClassList("input-field-label");
|
||||||
|
|
||||||
|
VisualElement inputElement = this.Q<VisualElement>("unity-text-input");
|
||||||
|
inputElement.ClearClassList();
|
||||||
|
inputElement.AddToClassList("input-field-box");
|
||||||
|
|
||||||
|
VisualElement textElement = inputElement.Q<VisualElement>("");
|
||||||
|
textElement.ClearClassList();
|
||||||
|
textElement.AddToClassList("unity-text-element");
|
||||||
|
textElement.AddToClassList("input-field-text");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1d30b5caf969d9b4ab1464d329cf16ca
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
namespace MuHua {
|
||||||
|
public class UITextField : TextField {
|
||||||
|
public new class UxmlFactory : UxmlFactory<UITextField, UxmlTraits> { }
|
||||||
|
public new class UxmlTraits : TextField.UxmlTraits {
|
||||||
|
public UxmlStringAttributeDescription DefaultPrompt = new UxmlStringAttributeDescription {
|
||||||
|
name = "default-prompt"
|
||||||
|
};
|
||||||
|
public override void Init(VisualElement ve, IUxmlAttributes bag, CreationContext cc) {
|
||||||
|
base.Init(ve, bag, cc);
|
||||||
|
UITextField textField = (UITextField)ve;
|
||||||
|
textField.DefaultPrompt = DefaultPrompt.GetValueFromBag(bag, cc);
|
||||||
|
textField.SetDefaultPrompt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public string DefaultPrompt { get; set; }
|
||||||
|
|
||||||
|
public VisualElement inputElement => this.Q<VisualElement>("unity-text-input");
|
||||||
|
public VisualElement textElement => inputElement.Q<VisualElement>("");
|
||||||
|
|
||||||
|
public UITextField() {
|
||||||
|
ClearClassList();
|
||||||
|
AddToClassList("input-field");
|
||||||
|
|
||||||
|
labelElement.ClearClassList();
|
||||||
|
labelElement.AddToClassList("unity-text-element");
|
||||||
|
labelElement.AddToClassList("input-field-label");
|
||||||
|
|
||||||
|
inputElement.ClearClassList();
|
||||||
|
inputElement.AddToClassList("input-field-box");
|
||||||
|
|
||||||
|
textElement.ClearClassList();
|
||||||
|
textElement.AddToClassList("unity-text-element");
|
||||||
|
textElement.AddToClassList("input-field-text");
|
||||||
|
|
||||||
|
RegisterCallback<FocusInEvent>((evt) => { PrepareInput(); });
|
||||||
|
RegisterCallback<FocusOutEvent>((evt) => { SetDefaultPrompt(); });
|
||||||
|
}
|
||||||
|
public void PrepareInput() {
|
||||||
|
textElement.RemoveFromClassList("input-field-text-d");
|
||||||
|
if (text != DefaultPrompt) { return; }
|
||||||
|
text = "";
|
||||||
|
}
|
||||||
|
public void SetDefaultPrompt() {
|
||||||
|
textElement.RemoveFromClassList("input-field-text-d");
|
||||||
|
if (value != "") { return; }
|
||||||
|
text = DefaultPrompt;
|
||||||
|
textElement.AddToClassList("input-field-text-d");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3bbf7cc5bf423304dbb4eac4f82b2bee
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
+5
-6
@@ -8,9 +8,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 滚动视图
|
/// 滚动视图
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UIScrollView {
|
public class UIScrollView : ModuleUIPanel {
|
||||||
/// <summary> 绑定的元素 </summary>
|
|
||||||
public readonly VisualElement element;
|
|
||||||
/// <summary> 绑定的画布 </summary>
|
/// <summary> 绑定的画布 </summary>
|
||||||
public readonly VisualElement canvas;
|
public readonly VisualElement canvas;
|
||||||
/// <summary> 元素方向 </summary>
|
/// <summary> 元素方向 </summary>
|
||||||
@@ -31,8 +29,8 @@ namespace MuHua {
|
|||||||
public readonly VisualElement ScrollerHorizontal;
|
public readonly VisualElement ScrollerHorizontal;
|
||||||
public readonly VisualElement ScrollerVertical;
|
public readonly VisualElement ScrollerVertical;
|
||||||
|
|
||||||
public UIScrollView(VisualElement element, VisualElement canvas, UIDirection direction = UIDirection.HorizontalAndVertical, UIDirection sh = UIDirection.FromLeftToRight, UIDirection sv = UIDirection.FromTopToBottom) {
|
public UIScrollView(VisualElement element, VisualElement canvas, UIDirection direction = UIDirection.HorizontalAndVertical,
|
||||||
this.element = element;
|
UIDirection sh = UIDirection.FromLeftToRight, UIDirection sv = UIDirection.FromTopToBottom) : base(element) {
|
||||||
this.canvas = canvas;
|
this.canvas = canvas;
|
||||||
this.direction = direction;
|
this.direction = direction;
|
||||||
|
|
||||||
@@ -73,7 +71,8 @@ namespace MuHua {
|
|||||||
float wheel = Mathf.Clamp(evt.delta.y, -1, 1);
|
float wheel = Mathf.Clamp(evt.delta.y, -1, 1);
|
||||||
if (direction == UIDirection.Horizontal) {
|
if (direction == UIDirection.Horizontal) {
|
||||||
UpdateValue(new Vector2(value.x - wheel, value.y));
|
UpdateValue(new Vector2(value.x - wheel, value.y));
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
UpdateValue(new Vector2(value.x, value.y - wheel));
|
UpdateValue(new Vector2(value.x, value.y - wheel));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+2
-5
@@ -8,9 +8,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 滚动条
|
/// 滚动条
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UIScroller {
|
public class UIScroller : ModuleUIPanel {
|
||||||
/// <summary> 绑定的元素 </summary>
|
|
||||||
public readonly VisualElement element;
|
|
||||||
/// <summary> 绑定的画布 </summary>
|
/// <summary> 绑定的画布 </summary>
|
||||||
public readonly VisualElement canvas;
|
public readonly VisualElement canvas;
|
||||||
/// <summary> 元素方向 </summary>
|
/// <summary> 元素方向 </summary>
|
||||||
@@ -27,8 +25,7 @@ namespace MuHua {
|
|||||||
|
|
||||||
public readonly VisualElement Dragger;
|
public readonly VisualElement Dragger;
|
||||||
|
|
||||||
public UIScroller(VisualElement element, VisualElement canvas, UIDirection direction = UIDirection.FromLeftToRight) {
|
public UIScroller(VisualElement element, VisualElement canvas, UIDirection direction = UIDirection.FromLeftToRight) : base(element) {
|
||||||
this.element = element;
|
|
||||||
this.canvas = canvas;
|
this.canvas = canvas;
|
||||||
this.direction = direction;
|
this.direction = direction;
|
||||||
|
|
||||||
+2
-5
@@ -8,9 +8,7 @@ namespace MuHua {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 滑块
|
/// 滑块
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class UISlider {
|
public class UISlider : ModuleUIPanel {
|
||||||
/// <summary> 绑定的元素 </summary>
|
|
||||||
public readonly VisualElement element;
|
|
||||||
/// <summary> 绑定的画布 </summary>
|
/// <summary> 绑定的画布 </summary>
|
||||||
public readonly VisualElement canvas;
|
public readonly VisualElement canvas;
|
||||||
/// <summary> 元素方向 </summary>
|
/// <summary> 元素方向 </summary>
|
||||||
@@ -29,8 +27,7 @@ namespace MuHua {
|
|||||||
public readonly VisualElement Tracker;
|
public readonly VisualElement Tracker;
|
||||||
public readonly VisualElement Dragger;
|
public readonly VisualElement Dragger;
|
||||||
|
|
||||||
public UISlider(VisualElement element, VisualElement canvas, UIDirection direction = UIDirection.FromLeftToRight) {
|
public UISlider(VisualElement element, VisualElement canvas, UIDirection direction = UIDirection.FromLeftToRight) : base(element) {
|
||||||
this.element = element;
|
|
||||||
this.canvas = canvas;
|
this.canvas = canvas;
|
||||||
this.direction = direction;
|
this.direction = direction;
|
||||||
|
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UIElements;
|
||||||
|
|
||||||
|
#if ENABLE_INPUT_SYSTEM && UNITY_INPUT_SYSTEM_PACKAGE
|
||||||
|
using UnityEngine.InputSystem;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace MuHua {
|
||||||
|
/// <summary>
|
||||||
|
/// 悬浮窗口
|
||||||
|
/// </summary>
|
||||||
|
public abstract class UIWindow : ModuleUIPanel {
|
||||||
|
/// <summary> 绑定的画布 </summary>
|
||||||
|
public readonly VisualElement canvas;
|
||||||
|
|
||||||
|
private bool isDownMove;
|
||||||
|
private Vector3 pointerPosition;
|
||||||
|
private Vector3 originalPosition;
|
||||||
|
|
||||||
|
public VisualElement Window => element.Q<VisualElement>("Window");
|
||||||
|
public VisualElement Top => element.Q<VisualElement>("Top");
|
||||||
|
public VisualElement Container => element.Q<VisualElement>("Container");
|
||||||
|
|
||||||
|
public Label Title => element.Q<Label>("Title");
|
||||||
|
public Button Close => element.Q<Button>("Close");
|
||||||
|
|
||||||
|
public UIWindow(VisualElement element, VisualElement canvas) : base(element) {
|
||||||
|
this.canvas = canvas;
|
||||||
|
|
||||||
|
Top.RegisterCallback<PointerDownEvent>(TopDown);
|
||||||
|
canvas.RegisterCallback<PointerUpEvent>((evt) => isDownMove = false);
|
||||||
|
canvas.RegisterCallback<PointerLeaveEvent>((evt) => isDownMove = false);
|
||||||
|
|
||||||
|
Close.clicked += () => { SetActive(false); };
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary> 按下Top </summary>
|
||||||
|
private void TopDown(PointerDownEvent evt) {
|
||||||
|
isDownMove = true;
|
||||||
|
pointerPosition = UITool.GetMousePosition();
|
||||||
|
originalPosition = Window.transform.position;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary> 设置活动状态 </summary>
|
||||||
|
public virtual void SetActive(bool active) {
|
||||||
|
Window.EnableInClassList("window-hidden", !active);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary> 更新状态 </summary>
|
||||||
|
public virtual void Update() {
|
||||||
|
if (!isDownMove) { return; }
|
||||||
|
Vector3 mousePosition = UITool.GetMousePosition();
|
||||||
|
Vector3 offset = mousePosition - pointerPosition;
|
||||||
|
Vector3 position = originalPosition + new Vector3(offset.x, -offset.y);
|
||||||
|
|
||||||
|
float width = canvas.resolvedStyle.width - Window.resolvedStyle.width;
|
||||||
|
float height = canvas.resolvedStyle.height - Window.resolvedStyle.height;
|
||||||
|
position.x = Mathf.Clamp(position.x, 0, width);
|
||||||
|
position.y = Mathf.Clamp(position.y, 0, height);
|
||||||
|
|
||||||
|
Window.transform.position = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.UIElements;
|
|
||||||
|
|
||||||
#if ENABLE_INPUT_SYSTEM && UNITY_INPUT_SYSTEM_PACKAGE
|
|
||||||
using UnityEngine.InputSystem;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace MuHua
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 悬浮窗口
|
|
||||||
/// </summary>
|
|
||||||
public abstract class UIFloatingWindow
|
|
||||||
{
|
|
||||||
/// <summary> 绑定的元素 </summary>
|
|
||||||
public readonly VisualElement element;
|
|
||||||
/// <summary> 绑定的画布 </summary>
|
|
||||||
public readonly VisualElement canvas;
|
|
||||||
|
|
||||||
private bool isDownMove;
|
|
||||||
private Vector3 pointerPosition;
|
|
||||||
private Vector3 originalPosition;
|
|
||||||
|
|
||||||
public VisualElement Window => element.Q<VisualElement>("Window");
|
|
||||||
public VisualElement Top => element.Q<VisualElement>("Top");
|
|
||||||
public VisualElement Container => element.Q<VisualElement>("Container");
|
|
||||||
|
|
||||||
public Label Title => element.Q<Label>("Title");
|
|
||||||
public Button Close => element.Q<Button>("Close");
|
|
||||||
|
|
||||||
public UIFloatingWindow(VisualElement element, VisualElement canvas)
|
|
||||||
{
|
|
||||||
this.element = element;
|
|
||||||
this.canvas = canvas;
|
|
||||||
|
|
||||||
Top.RegisterCallback<PointerDownEvent>(TopDown);
|
|
||||||
canvas.RegisterCallback<PointerUpEvent>((evt) => isDownMove = false);
|
|
||||||
canvas.RegisterCallback<PointerLeaveEvent>((evt) => isDownMove = false);
|
|
||||||
|
|
||||||
Close.clicked += () => { SetActive(false); };
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary> 按下Top </summary>
|
|
||||||
private void TopDown(PointerDownEvent evt)
|
|
||||||
{
|
|
||||||
isDownMove = true;
|
|
||||||
pointerPosition = UITool.GetMousePosition();
|
|
||||||
originalPosition = Window.transform.position;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary> 设置活动状态 </summary>
|
|
||||||
public virtual void SetActive(bool active)
|
|
||||||
{
|
|
||||||
Window.EnableInClassList("window-hidden", !active);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary> 更新状态 </summary>
|
|
||||||
public virtual void Update()
|
|
||||||
{
|
|
||||||
if (!isDownMove) { return; }
|
|
||||||
Vector3 mousePosition = UITool.GetMousePosition();
|
|
||||||
Vector3 offset = mousePosition - pointerPosition;
|
|
||||||
Vector3 position = originalPosition + new Vector3(offset.x, -offset.y);
|
|
||||||
|
|
||||||
float width = canvas.resolvedStyle.width - Window.resolvedStyle.width;
|
|
||||||
float height = canvas.resolvedStyle.height - Window.resolvedStyle.height;
|
|
||||||
position.x = Mathf.Clamp(position.x, 0, width);
|
|
||||||
position.y = Mathf.Clamp(position.y, 0, height);
|
|
||||||
|
|
||||||
Window.transform.position = position;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user