初始化

This commit is contained in:
come
2025-07-26 16:56:42 +08:00
parent 8291dbb91c
commit fa81439a8c
2574 changed files with 328492 additions and 2170 deletions

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 87095cf2adc14bc0a8d02e43653fda03
timeCreated: 1682072802

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ba64967cec9c48b1b4c09f76127a2895
timeCreated: 1683359859

View File

@@ -0,0 +1,85 @@
#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Sirenix.OdinInspector.Editor;
using UnityEditor;
namespace YIUIFramework.Editor
{
/// <summary>
/// 奥丁扩展
/// </summary>
public static class OdinMenuTree_Extensions
{
//仿照源码扩展的 根据 AssetImporter 类型
public static IEnumerable<OdinMenuItem> AddAllAssetImporterAtPath(
this OdinMenuTree tree,
string menuPath,
string assetFolderPath,
System.Type type,
bool includeSubDirectories = false,
bool flattenSubDirectories = false)
{
assetFolderPath = (assetFolderPath ?? "").TrimEnd('/') + "/";
string lower = assetFolderPath.ToLower();
if (!lower.StartsWith("assets/") && !lower.StartsWith("packages/"))
assetFolderPath = "Assets/" + assetFolderPath;
assetFolderPath = assetFolderPath.TrimEnd('/') + "/";
IEnumerable<string> strings = ((IEnumerable<string>)AssetDatabase.GetAllAssetPaths()).Where<string>(
(Func<string, bool>)(x =>
{
if (includeSubDirectories)
return x.StartsWith(assetFolderPath, StringComparison.InvariantCultureIgnoreCase);
return string.Compare(Sirenix.Utilities.PathUtilities.GetDirectoryName(x).Trim('/'),
assetFolderPath.Trim('/'), true) == 0;
}));
menuPath = menuPath ?? "";
menuPath = menuPath.TrimStart('/');
HashSet<OdinMenuItem> result = new HashSet<OdinMenuItem>();
foreach (string str1 in strings)
{
var assetImporter = AssetImporter.GetAtPath(str1);
if (assetImporter != null && type.IsInstanceOfType(assetImporter))
{
string withoutExtension = Path.GetFileNameWithoutExtension(str1);
string path = menuPath;
if (!flattenSubDirectories)
{
string str2 =
(Sirenix.Utilities.PathUtilities.GetDirectoryName(str1).TrimEnd('/') + "/").Substring(
assetFolderPath.Length);
if (str2.Length != 0)
path = path.Trim('/') + "/" + str2;
}
path = path.Trim('/') + "/" + withoutExtension;
string name;
SplitMenuPath(path, out path, out name);
tree.AddMenuItemAtPath((ICollection<OdinMenuItem>)result, path,
new OdinMenuItem(tree, name, (object)@assetImporter));
}
}
return (IEnumerable<OdinMenuItem>)result;
}
private static void SplitMenuPath(string menuPath, out string path, out string name)
{
menuPath = menuPath.Trim('/');
int length = menuPath.LastIndexOf('/');
if (length == -1)
{
path = "";
name = menuPath;
}
else
{
path = menuPath.Substring(0, length);
name = menuPath.Substring(length + 1);
}
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d4a43b80dfd64b4fab8567212040a549
timeCreated: 1683359884

View File

@@ -0,0 +1,37 @@
#if UNITY_EDITOR
using Sirenix.Serialization;
using UnityEngine;
namespace YIUIFramework.Editor
{
/// <summary>
/// odin 序列化文件存储 适用于大数据
/// </summary>
public static class OdinSerializationUtility
{
public static void Save<T>(T data, string path, DataFormat dataFormat = DataFormat.JSON)
{
var bytes = SerializationUtility.SerializeValue(data, dataFormat);
EditorHelper.WriteAllBytes(path, bytes);
}
public static T Load<T>(string path, DataFormat dataFormat = DataFormat.JSON)
{
var bytes = EditorHelper.ReadAllBytes(path);
if (bytes == null)
{
return default;
}
var data = SerializationUtility.DeserializeValue<T>(bytes, dataFormat);
if (data == null)
{
Debug.LogError($"反序列化错误 {path}");
return default;
}
return data;
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c99122695d00479b966c46a96e0d7e66
timeCreated: 1683531278

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4a77881789fe458fb13fb86cf84ced44
timeCreated: 1724036658

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 609b8fe5c8304b82afa3b4af665188ae
timeCreated: 1724036668

View File

@@ -0,0 +1,31 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using YIUIBind;
namespace YIUIFramework.Editor
{
public class YIUIComponentTableContextMenu
{
[MenuItem("CONTEXT/Component/添加到YIUI组件表", false, -int.MaxValue)]
private static void AddYIUIComponentTable(MenuCommand command)
{
if (!UIOperationHelper.CheckUIOperation()) return;
if (command.context is not Component menuComponent) return;
var cdeTable = Selection.activeGameObject.GetComponentInParent<UIBindCDETable>();
if (cdeTable == null) return;
cdeTable.ComponentTable ??= cdeTable.gameObject.AddComponent<UIBindComponentTable>();
cdeTable.ComponentTable.EditorAddComponent(menuComponent);
}
[MenuItem("CONTEXT/Component/添加到YIUI组件表", true)]
private static bool AddYIUIComponentTableValidate(MenuCommand command)
{
if (Selection.activeGameObject == null) return false;
var cdeTable = Selection.activeGameObject.GetComponentInParent<UIBindCDETable>();
if (cdeTable == null) return false;
return true;
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f3bc9bbf1020420c9d63d0e7b6fec4da
timeCreated: 1724036674

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d245808d7ff847baaf4610c12908724b
timeCreated: 1683636809

View File

@@ -0,0 +1,34 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using YIUIBind;
namespace YIUIFramework.Editor
{
public static class MenuItemYIUIComponent
{
[MenuItem("GameObject/YIUI/Create UIComponent", false, 2)]
static void CreateYIUIComponent()
{
var activeObject = Selection.activeObject as GameObject;
if (activeObject == null)
{
UnityTipsHelper.ShowError($"请选择一个目标");
return;
}
//Component
var componentObject = new GameObject();
var viewRect = componentObject.GetOrAddComponent<RectTransform>();
componentObject.GetOrAddComponent<CanvasRenderer>();
var cdeTable = componentObject.GetOrAddComponent<UIBindCDETable>();
cdeTable.UICodeType = EUICodeType.Component;
viewRect.SetParent(activeObject.transform, false);
componentObject.SetLayerRecursively(LayerMask.NameToLayer("UI"));
Selection.activeObject = componentObject;
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 979f4a69430a405893bcbb1e091ed690
timeCreated: 1683863551

View File

@@ -0,0 +1,129 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using YIUIBind;
namespace YIUIFramework.Editor
{
public static class MenuItemYIUIPanel
{
[MenuItem("Assets/YIUI/Create UIPanel", false, 0)]
static void CreateYIUIPanelByFolder()
{
var activeObject = Selection.activeObject as DefaultAsset;
if (activeObject == null)
{
UnityTipsHelper.ShowError(
$"请在路径 {UIStaticHelper.UIProjectResPath}/xxx/{UIStaticHelper.UISource} 下右键创建");
return;
}
var path = AssetDatabase.GetAssetPath(Selection.activeObject);
if (activeObject.name != UIStaticHelper.UISource ||
!path.Contains(UIStaticHelper.UIProjectResPath))
{
UnityTipsHelper.ShowError(
$"请在路径 {UIStaticHelper.UIProjectResPath}/xxx/{UIStaticHelper.UISource} 下右键创建");
return;
}
CreateYIUIPanelByPath(path);
}
internal static void CreateYIUIPanelByPath(string path, string name = null)
{
if (!path.Contains(UIStaticHelper.UIProjectResPath))
{
UnityTipsHelper.ShowError(
$"请在路径 {UIStaticHelper.UIProjectResPath}/xxx/{UIStaticHelper.UISource} 下右键创建");
return;
}
var saveName = string.IsNullOrEmpty(name)
? UIStaticHelper.UIYIUIPanelSourceName
: $"{name}{UIStaticHelper.UIPanelSourceName}";
var savePath = $"{path}/{saveName}.prefab";
if (AssetDatabase.LoadAssetAtPath(savePath, typeof(Object)) != null)
{
UnityTipsHelper.ShowError($"已存在 请先重命名 {saveName}");
return;
}
var createPanel = CreateYIUIPanel();
var panelPrefab = PrefabUtility.SaveAsPrefabAsset(createPanel, savePath);
Object.DestroyImmediate(createPanel);
Selection.activeObject = panelPrefab;
}
[MenuItem("GameObject/YIUI/Create UIPanel", false, 0)]
static void CreateYIUIPanelByGameObject()
{
var activeObject = Selection.activeObject as GameObject;
if (activeObject == null)
{
UnityTipsHelper.ShowError($"请选择UIRoot 右键创建");
return;
}
if (activeObject.name != PanelMgr.UILayerRootName)
{
UnityTipsHelper.ShowError($"只能在指定的 {PanelMgr.UILayerRootName} 下使用 快捷创建Panel");
return;
}
Selection.activeObject = CreateYIUIPanel(activeObject);
}
static GameObject CreateYIUIPanel(GameObject activeObject = null)
{
//panel
var panelObject = new GameObject();
var panelRect = panelObject.GetOrAddComponent<RectTransform>();
panelObject.GetOrAddComponent<CanvasRenderer>();
var cdeTable = panelObject.GetOrAddComponent<UIBindCDETable>();
cdeTable.UICodeType = EUICodeType.Panel;
cdeTable.IsSplitData = true;
//cdeTable.PanelOption |= EPanelOption.DisReset; //如果想要都是默认缓存界面可开启
var panelEditorData = cdeTable.PanelSplitData;
panelEditorData.Panel = panelObject;
panelObject.name = UIStaticHelper.UIYIUIPanelSourceName;
if (activeObject != null)
panelRect.SetParent(activeObject.transform, false);
panelRect.ResetToFullScreen();
//阻挡图
var backgroundObject = new GameObject();
var backgroundRect = backgroundObject.GetOrAddComponent<RectTransform>();
backgroundObject.GetOrAddComponent<CanvasRenderer>();
backgroundObject.GetOrAddComponent<UIBlock>();
backgroundObject.name = "UIBlockBG";
backgroundRect.SetParent(panelRect, false);
backgroundRect.ResetToFullScreen();
// 添加allView节点
var allViewObject = new GameObject();
var allViewRect = allViewObject.GetOrAddComponent<RectTransform>();
allViewObject.name = UIStaticHelper.UIAllViewParentName;
allViewRect.SetParent(panelRect, false);
allViewRect.ResetToFullScreen();
panelEditorData.AllViewParent = allViewRect;
// 添加AllPopupView节点
var allPopupViewObject = new GameObject();
var allPopupViewRect = allPopupViewObject.GetOrAddComponent<RectTransform>();
allPopupViewObject.name = UIStaticHelper.UIAllPopupViewParentName;
allPopupViewRect.SetParent(panelRect, false);
allPopupViewRect.ResetToFullScreen();
panelEditorData.AllPopupViewParent = allPopupViewRect;
panelObject.SetLayerRecursively(LayerMask.NameToLayer("UI"));
return panelObject;
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 64189a057fed4cfca7e9d799e3bc6799
timeCreated: 1683636826

View File

@@ -0,0 +1,150 @@
#if UNITY_EDITOR
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using YIUIBind;
namespace YIUIFramework.Editor
{
/// <summary>
/// 面板逆向 转换为源数据
/// </summary>
public static class MenuItemYIUIPanelToSource
{
[MenuItem("Assets/YIUI/Panel 逆向 源数据 Source", false, 1)]
static void CreateYIUIPanelByFolder()
{
var activeObject = Selection.activeObject as GameObject;
if (activeObject == null)
{
UnityTipsHelper.ShowError("必须选择一个Panel 对象");
return;
}
var path = AssetDatabase.GetAssetPath(Selection.activeObject);
if (!path.Contains(UIStaticHelper.UIProjectResPath))
{
UnityTipsHelper.ShowError(
$"请在路径 {UIStaticHelper.UIProjectResPath}/xxx/{UIStaticHelper.UIPanelName} 下右键选择一个Panel 进行转换");
return;
}
var panelCdeTable = activeObject.GetComponent<UIBindCDETable>();
if (panelCdeTable == null)
{
UnityTipsHelper.ShowError("预设错误 没有 UIBindCDETable");
return;
}
if (panelCdeTable.UICodeType != EUICodeType.Panel)
{
UnityTipsHelper.ShowError("预设错误 必须是Panel");
return;
}
if (panelCdeTable.IsSplitData)
{
UnityTipsHelper.ShowError("这是一个源数据 无法逆向转换");
return;
}
if (string.IsNullOrEmpty(panelCdeTable.PkgName))
{
panelCdeTable.AutoCheck();
}
if (string.IsNullOrEmpty(panelCdeTable.PkgName))
{
UnityTipsHelper.ShowError("未知错误 无法识别 包名");
return;
}
var newSourceName = $"{panelCdeTable.name}{UIStaticHelper.UISource}";
var savePath =
$"{UIStaticHelper.UIProjectResPath}/{panelCdeTable.PkgName}/{UIStaticHelper.UISource}/{newSourceName}.prefab";
if (AssetDatabase.LoadAssetAtPath(savePath, typeof(Object)) != null)
{
UnityTipsHelper.CallBack("源数据已存在!!! 此操作将会覆盖旧的数据!!!", () => { CreateNewSource(path, savePath); });
}
else
{
CreateNewSource(path, savePath);
}
}
private static void CreateNewSource(string loadPath, string savePath)
{
var loadPanel = (GameObject)AssetDatabase.LoadAssetAtPath(loadPath, typeof(Object));
if (loadPanel == null)
{
UnityTipsHelper.ShowError($"未知错误 没有加载到Panel 请检查 {loadPath}");
return;
}
var newSource = UIMenuItemHelper.CopyGameObject(loadPanel);
var oldCdeTable = newSource.GetComponent<UIBindCDETable>();
oldCdeTable.IsSplitData = true;
newSource.name = $"{loadPanel.name}{UIStaticHelper.UISource}";
CorrelationView(oldCdeTable);
PrefabUtility.SaveAsPrefabAsset(newSource, savePath);
Object.DestroyImmediate(newSource);
UnityTipsHelper.Show($"Panel 逆向 源数据 完毕");
AssetDatabase.Refresh();
}
//关联UI
private static void CorrelationView(UIBindCDETable cdeTable)
{
CorrelationViewByParent(cdeTable.PkgName, cdeTable.PanelSplitData.AllCommonView);
CorrelationViewByParent(cdeTable.PkgName, cdeTable.PanelSplitData.AllCreateView);
CorrelationViewByParent(cdeTable.PkgName, cdeTable.PanelSplitData.AllPopupView);
}
private static void CorrelationViewByParent(string pkgName, List<RectTransform> parentList)
{
foreach (var viewParent in parentList)
{
if (viewParent == null) continue;
var viewName = viewParent.name.Replace(UIStaticHelper.UIParentName, "");
var viewPath =
$"{UIStaticHelper.UIProjectResPath}/{pkgName}/{UIStaticHelper.UIPrefabs}/{viewName}.prefab";
var childView = viewParent.FindChildByName(viewName);
if (childView != null)
{
Object.DestroyImmediate(childView.gameObject);
}
AddView(viewPath, viewParent);
}
}
//吧其他view 关联上
private static void AddView(string loadPath, Transform parent)
{
var loadView = (GameObject)AssetDatabase.LoadAssetAtPath(loadPath, typeof(Object));
if (loadView == null)
{
UnityTipsHelper.ShowError($"未知错误 没有加载到 请检查 {loadPath}");
return;
}
var prefabInstance = PrefabUtility.InstantiatePrefab(loadView) as GameObject;
if (prefabInstance == null)
{
Debug.LogError($"{loadView.name} 未知错误 得到一个null 对象");
return;
}
prefabInstance.transform.SetParent(parent, false);
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 214d108fca8542cf893f796f76cf7a13
timeCreated: 1685694944

View File

@@ -0,0 +1,79 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using YIUIBind;
namespace YIUIFramework.Editor
{
public static class MenuItemYIUIView
{
[MenuItem("GameObject/YIUI/Create UIView", false, 1)]
static void CreateYIUIView()
{
var activeObject = Selection.activeObject as GameObject;
if (activeObject == null)
{
UnityTipsHelper.ShowError($"请选择ViewParent 右键创建");
return;
}
var panelCdeTable = activeObject.transform.parent.GetComponentInParent<UIBindCDETable>();
if (panelCdeTable == null)
{
UnityTipsHelper.ShowError($"只能在AllViewParent / AllPopupViewParent 下使用 快捷创建View");
return;
}
if (panelCdeTable.UICodeType != EUICodeType.Panel)
{
UnityTipsHelper.ShowError($"必须是Panel 下使用 快捷创建View");
return;
}
var panelEditorData = panelCdeTable.PanelSplitData;
if (activeObject != panelEditorData.AllViewParent.gameObject &&
activeObject != panelEditorData.AllPopupViewParent.gameObject)
{
UnityTipsHelper.ShowError($"只能在AllViewParent / AllPopupViewParent 下使用 快捷创建View");
return;
}
//ViewParent
var viewParentObject = new GameObject();
var viewParentRect = viewParentObject.GetOrAddComponent<RectTransform>();
viewParentObject.name = UIStaticHelper.UIYIUIViewParentName;
viewParentRect.SetParent(activeObject.transform, false);
viewParentRect.ResetToFullScreen();
//View
var viewObject = new GameObject();
var viewRect = viewObject.GetOrAddComponent<RectTransform>();
viewObject.GetOrAddComponent<CanvasRenderer>();
var cdeTable = viewObject.GetOrAddComponent<UIBindCDETable>();
cdeTable.UICodeType = EUICodeType.View;
viewObject.name = UIStaticHelper.UIYIUIViewName;
viewRect.SetParent(viewParentRect, false);
viewRect.ResetToFullScreen();
if (activeObject == panelEditorData.AllViewParent.gameObject)
{
panelEditorData.AllCreateView.Add(viewParentRect);
cdeTable.ViewWindowType = EViewWindowType.View;
}
else if (activeObject == panelEditorData.AllPopupViewParent.gameObject)
{
panelEditorData.AllPopupView.Add(viewParentRect);
cdeTable.ViewWindowType = EViewWindowType.Popup;
}
viewParentObject.SetLayerRecursively(LayerMask.NameToLayer("UI"));
Selection.activeObject = viewParentObject;
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bd805e98138744d892e64dc189a1d601
timeCreated: 1683685941

View File

@@ -0,0 +1,43 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using YIUIBind;
namespace YIUIFramework.Editor
{
public static class UIMenuItemHelper
{
/// <summary>
/// 克隆对象 根据传入的路径
/// </summary>
/// <param name="path"></param>
/// <param name="parent"></param>
/// <returns></returns>
public static GameObject CloneGameObjectByPath(string path, Transform parent = null)
{
var loadSource = (GameObject)AssetDatabase.LoadAssetAtPath(path, typeof(Object));
if (loadSource == null)
{
UnityTipsHelper.ShowError($"未知错误 没有加载到源数据 请检查 {path}");
return null;
}
var newGameObj = Object.Instantiate(loadSource, parent, false);
if (newGameObj.name.EndsWith("(Clone)"))
newGameObj.name = newGameObj.name.Replace("(Clone)", "");
return newGameObj;
}
public static GameObject CopyGameObject(GameObject obj)
{
var newGameObj = Object.Instantiate(obj);
if (newGameObj.name.EndsWith("(Clone)"))
newGameObj.name = newGameObj.name.Replace("(Clone)", "");
return newGameObj;
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4eddbc53cfe04eb28c414f5c9fb59aac
timeCreated: 1685006007

View File

@@ -0,0 +1,173 @@
#if UNITY_EDITOR
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using YIUIBind;
namespace YIUIFramework.Editor
{
/// <summary>
/// 源数据拆分
/// </summary>
public static class UIPanelSourceSplit
{
internal static void Do(UIBindCDETable source)
{
if (!source.IsSplitData)
{
UnityTipsHelper.ShowError($"只有源数据才可以拆分 请检查 {source.name}");
return;
}
var pkgName = source.PkgName;
if (pkgName == null)
{
UnityTipsHelper.ShowError($"未知错误 pkgName = null 请检查 {source.name}");
return;
}
var path = PrefabUtility.GetPrefabAssetPathOfNearestInstanceRoot(source);
var loadSource = (GameObject)AssetDatabase.LoadAssetAtPath(path, typeof(Object));
if (loadSource == null)
{
UnityTipsHelper.ShowError($"未知错误 没有加载到源数据 请检查 {source.name} {path}");
return;
}
var oldSource = UIMenuItemHelper.CopyGameObject(loadSource);
var oldCdeTable = oldSource.GetComponent<UIBindCDETable>();
var oldSplitData = oldCdeTable.PanelSplitData;
var newSource = UIMenuItemHelper.CopyGameObject(loadSource);
var cdeTable = newSource.GetComponent<UIBindCDETable>();
newSource.name = newSource.name.Replace(UIStaticHelper.UISource, "");
cdeTable.IsSplitData = false;
cdeTable.PanelSplitEditorShowData = cdeTable.PanelSplitData;
var splitData = cdeTable.PanelSplitData;
var savePath = $"{UIStaticHelper.UIProjectResPath}/{pkgName}/{UIStaticHelper.UIPrefabs}";
AllViewSaveAsPrefabAsset(oldSplitData.AllCommonView, splitData.AllCommonView, savePath, true);
AllViewSaveAsPrefabAsset(oldSplitData.AllCreateView, splitData.AllCreateView, savePath);
AllViewSaveAsPrefabAsset(oldSplitData.AllPopupView, splitData.AllPopupView, savePath);
//拆分后新的
SaveAsPrefabAsset(newSource, $"{savePath}/{newSource.name}.prefab");
Object.DestroyImmediate(newSource);
//老的重新关联 覆盖老数据
PrefabUtility.SaveAsPrefabAsset(oldSource, path);
Object.DestroyImmediate(oldSource);
UnityTipsHelper.Show($"源数据拆分完毕");
AssetDatabase.Refresh();
}
private static void AllViewSaveAsPrefabAsset(List<RectTransform> oldList, List<RectTransform> newList,
string savePath, bool nest = false)
{
if (oldList.Count != newList.Count)
{
Debug.LogError($"未知错误 长度不一致 {savePath}");
return;
}
for (var i = 0; i < newList.Count; i++)
{
var viewParent = newList[i];
var oldViewParent = oldList[i];
SaveAsPrefabAssetViewParent(oldViewParent, viewParent, savePath, nest);
}
}
private static bool SaveAsPrefabAssetViewParent(RectTransform oldViewParent, RectTransform viewParent,
string savePath, bool nest = false)
{
//View 查找
var view = viewParent.FindChildByName(viewParent.name.Replace(UIStaticHelper.UIParentName, ""));
if (view == null)
{
Debug.LogError($"{viewParent.name} 没找到View");
return false;
}
var oldView = oldViewParent.FindChildByName(oldViewParent.name.Replace(UIStaticHelper.UIParentName, ""));
if (oldView == null)
{
Debug.LogError($"{oldViewParent.name} 没找到oldView");
return false;
}
//CDE 查找
if (view.GetComponent<UIBindCDETable>() == null)
{
Debug.LogError($"{viewParent.name} 没找到 UIBindCDETable 组件 请检查");
return false;
}
if (oldView.GetComponent<UIBindCDETable>() == null)
{
Debug.LogError($"{oldViewParent.name} Old没找到 UIBindCDETable 组件 请检查");
return false;
}
var prefabPath = $"{savePath}/{view.name}.prefab";
var viewPrefab = SaveAsPrefabAsset(view.gameObject, prefabPath);
Object.DestroyImmediate(view.gameObject);
Object.DestroyImmediate(oldView.gameObject);
//old 是每个下面都有一个关联上
var oldPrefabInstance = PrefabUtility.InstantiatePrefab(viewPrefab) as GameObject;
if (oldPrefabInstance == null)
{
Debug.LogError($"{oldViewParent.name} Old未知错误 得到一个null 对象");
return false;
}
oldPrefabInstance.transform.SetParent(oldViewParent, false);
//新要根据情况保留的才关联
if (nest)
{
var prefabInstance = PrefabUtility.InstantiatePrefab(viewPrefab) as GameObject;
if (prefabInstance == null)
{
Debug.LogError($"{viewParent.name} 未知错误 得到一个null 对象");
return false;
}
prefabInstance.transform.SetParent(viewParent, false);
}
return true;
}
private static GameObject SaveAsPrefabAsset(GameObject obj, string path)
{
var prefab = PrefabUtility.SaveAsPrefabAsset(obj, path);
if (prefab == null)
{
Debug.LogError($"{obj.name} 创建失败");
}
else
{
var cde = prefab.GetComponent<UIBindCDETable>();
if (cde == null)
{
Debug.LogError($"{obj.name} cde == null");
}
else
{
cde.AutoCheck();
}
}
return prefab;
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: d0f817bbdae742f0b7789f6825dc3e10
timeCreated: 1683712305

View File

@@ -0,0 +1,54 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using YIUIBind;
namespace YIUIFramework.Editor
{
internal static class YIUICommonMenuItem
{
private static void CreateTarget(string targetName)
{
var activeObject = Selection.activeObject as GameObject;
if (activeObject == null)
{
UnityTipsHelper.ShowError($"请选择一个对象 右键创建");
return;
}
var path = $"{UIStaticHelper.UIFrameworkPath}/YIUIEditor/TemplatePrefabs/YIUI/{targetName}.prefab";
Selection.activeObject = UIMenuItemHelper.CloneGameObjectByPath(path, activeObject.transform);
}
[MenuItem("GameObject/YIUI/Text_NoRaycast", false, 100001)]
private static void CreateText_NoRaycast()
{
CreateTarget("YIUIText_NoRaycast");
}
[MenuItem("GameObject/YIUI/Text (TMP)", false, 100002)]
private static void CreateTextTMP()
{
CreateTarget("YIUIText (TMP)");
}
[MenuItem("GameObject/YIUI/Image_NoRaycast", false, 100003)]
private static void CreateImage_NoRaycast()
{
CreateTarget("YIUIImage_NoRaycast");
}
[MenuItem("GameObject/YIUI/Button", false, 100004)]
private static void CreateButton()
{
CreateTarget("YIUIButton");
}
[MenuItem("GameObject/YIUI/Button_NoText", false, 100005)]
private static void CreateButton_NoText()
{
CreateTarget("YIUIButton_NoText");
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 39c78668dcd64b74b76474f7650b8632
timeCreated: 1685604081

View File

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

View File

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

View File

@@ -0,0 +1,220 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2264218814262229760
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5158556685710249134}
- component: {fileID: 8895265138851582692}
- component: {fileID: 4670920600990169267}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5158556685710249134
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2264218814262229760}
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_Children: []
m_Father: {fileID: 1760111303447216167}
m_RootOrder: 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!222 &8895265138851582692
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2264218814262229760}
m_CullTransparentMesh: 1
--- !u!114 &4670920600990169267
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2264218814262229760}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: Button
--- !u!1 &4062328072649584206
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1760111303447216167}
- component: {fileID: 7236069675228765863}
- component: {fileID: 99003234524458476}
- component: {fileID: 1818062969891771319}
- component: {fileID: 8549163909217736640}
m_Layer: 5
m_Name: YIUIButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1760111303447216167
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4062328072649584206}
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_Children:
- {fileID: 5158556685710249134}
m_Father: {fileID: 0}
m_RootOrder: 0
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: -222, y: -40}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7236069675228765863
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4062328072649584206}
m_CullTransparentMesh: 1
--- !u!114 &99003234524458476
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4062328072649584206}
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: 10905, guid: 0000000000000000f000000000000000, type: 0}
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!114 &1818062969891771319
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4062328072649584206}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 99003234524458476}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &8549163909217736640
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4062328072649584206}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 39a07d1afeeb4dcc812559d0b9fea3b9, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTsf: {fileID: 1760111303447216167}
scaleValue: 0.9
scaleTime: 0
popTime: 0
ease: 24

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 08baa4c9c7a9dcf4686ea5548fd6c3e8
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,140 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &216854766994716078
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2526253853375912903}
- component: {fileID: 6848157064171963719}
- component: {fileID: 4196685747413071372}
- component: {fileID: 2475056999973324887}
- component: {fileID: 5604341465690049568}
m_Layer: 5
m_Name: YIUIButton_NoText
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2526253853375912903
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 216854766994716078}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
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: -222, y: -40}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6848157064171963719
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 216854766994716078}
m_CullTransparentMesh: 1
--- !u!114 &4196685747413071372
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 216854766994716078}
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: 10905, guid: 0000000000000000f000000000000000, type: 0}
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!114 &2475056999973324887
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 216854766994716078}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 4196685747413071372}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &5604341465690049568
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 216854766994716078}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 39a07d1afeeb4dcc812559d0b9fea3b9, type: 3}
m_Name:
m_EditorClassIdentifier:
targetTsf: {fileID: 2526253853375912903}
scaleValue: 0.9
scaleTime: 0
popTime: 0
ease: 24

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2f359399ca6c13e43903de16fc11a4d0
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,77 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7022340244119748872
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3086074087405051399}
- component: {fileID: 8458762004786341917}
- component: {fileID: 3987916143614147667}
m_Layer: 5
m_Name: YIUIImage_NoRaycast
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3086074087405051399
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7022340244119748872}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
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: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8458762004786341917
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7022340244119748872}
m_CullTransparentMesh: 1
--- !u!114 &3987916143614147667
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7022340244119748872}
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: 0
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,7 @@
fileFormatVersion: 2
guid: abcd4228780e3e84d8c3dd0c63cb2cee
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,136 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6050487190006871404
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6110334109249954991}
- component: {fileID: 8566627466128875439}
- component: {fileID: 6299990907744123012}
m_Layer: 5
m_Name: YIUIText (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6110334109249954991
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6050487190006871404}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
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: 200, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8566627466128875439
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6050487190006871404}
m_CullTransparentMesh: 1
--- !u!114 &6299990907744123012
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6050487190006871404}
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: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: New Text
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, 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: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256
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}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 66e2b6b878ca49340a8768c104a1ff7b
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,81 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6334345900770655264
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3188298892138041577}
- component: {fileID: 2316987949050262427}
- component: {fileID: 5768054956402835996}
m_Layer: 5
m_Name: YIUIText_NoRaycast
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3188298892138041577
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6334345900770655264}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
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: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2316987949050262427
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6334345900770655264}
m_CullTransparentMesh: 1
--- !u!114 &5768054956402835996
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6334345900770655264}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, 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_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: New Text

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 17173fa0043395f4b857caf99fddc93f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,145 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &9031948223950311934
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1235445398102145398}
- component: {fileID: 9203488802161896165}
- component: {fileID: 1387132863913509290}
m_Layer: 5
m_Name: YIUIComponent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1235445398102145398
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9031948223950311934}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
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: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &9203488802161896165
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9031948223950311934}
m_CullTransparentMesh: 1
--- !u!114 &1387132863913509290
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9031948223950311934}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76af6b314c984a70bd77fd9c0d998f89, type: 3}
m_Name:
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: IsSplitData
Entry: 5
Data: false
- Name: PanelSplitData
Entry: 7
Data: 0|YIUIFramework.UIPanelSplitData, UIFramework
- Name: Panel
Entry: 6
Data:
- Name: AllViewParent
Entry: 6
Data:
- Name: AllCommonView
Entry: 7
Data: 1|System.Collections.Generic.List`1[[UnityEngine.RectTransform, UnityEngine.CoreModule]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name: AllCreateView
Entry: 7
Data: 2|System.Collections.Generic.List`1[[UnityEngine.RectTransform, UnityEngine.CoreModule]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name: AllPopupViewParent
Entry: 6
Data:
- Name: AllPopupView
Entry: 7
Data: 3|System.Collections.Generic.List`1[[UnityEngine.RectTransform, UnityEngine.CoreModule]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name: PanelSplitEditorShowData
Entry: 6
Data:
ComponentTable: {fileID: 0}
DataTable: {fileID: 0}
EventTable: {fileID: 0}
PkgName:
ResName:
AllChildCdeTable: []
UICodeType: 2
PanelLayer: 3
PanelOption: 0
CachePanelTime: 10
PanelStackOption: 2
ViewWindowType: 0
ViewStackOption: 2
Priority: 0
CanUseBaseOpen: 0
HaveIOpenNotOpen: 0
RepetitionOpenTween: 0

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9858e23aa828a034080027e718358629
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,282 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &25730475527604887
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7902191086218781939}
- component: {fileID: 4186553058732627765}
- component: {fileID: 7441188908663548484}
m_Layer: 5
m_Name: YIUIPanelSource
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7902191086218781939
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 25730475527604887}
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_Children:
- {fileID: 7274572396970625629}
- {fileID: 7950361135303092237}
- {fileID: 447905256063256638}
m_Father: {fileID: 0}
m_RootOrder: 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!222 &4186553058732627765
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 25730475527604887}
m_CullTransparentMesh: 1
--- !u!114 &7441188908663548484
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 25730475527604887}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76af6b314c984a70bd77fd9c0d998f89, type: 3}
m_Name:
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects:
- {fileID: 25730475527604887}
- {fileID: 7950361135303092237}
- {fileID: 447905256063256638}
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: IsSplitData
Entry: 5
Data: true
- Name: PanelSplitData
Entry: 7
Data: 0|YIUIFramework.UIPanelSplitData, UIFramework
- Name: Panel
Entry: 10
Data: 0
- Name: AllViewParent
Entry: 10
Data: 1
- Name: AllCommonView
Entry: 7
Data: 1|System.Collections.Generic.List`1[[UnityEngine.RectTransform, UnityEngine.CoreModule]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name: AllCreateView
Entry: 7
Data: 2|System.Collections.Generic.List`1[[UnityEngine.RectTransform, UnityEngine.CoreModule]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name: AllPopupViewParent
Entry: 10
Data: 2
- Name: AllPopupView
Entry: 7
Data: 3|System.Collections.Generic.List`1[[UnityEngine.RectTransform, UnityEngine.CoreModule]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name: PanelSplitEditorShowData
Entry: 6
Data:
ComponentTable: {fileID: 0}
DataTable: {fileID: 0}
EventTable: {fileID: 0}
PkgName:
ResName:
AllChildCdeTable: []
UICodeType: 0
PanelLayer: 3
PanelOption: 0
CachePanelTime: 10
PanelStackOption: 2
ViewWindowType: 0
ViewStackOption: 2
Priority: 0
CanUseBaseOpen: 0
HaveIOpenNotOpen: 0
RepetitionOpenTween: 0
--- !u!1 &5901490667485075336
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7274572396970625629}
- component: {fileID: 2143131043950148924}
- component: {fileID: 2502203244671968176}
m_Layer: 5
m_Name: UIBlockBG
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7274572396970625629
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5901490667485075336}
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_Children: []
m_Father: {fileID: 7902191086218781939}
m_RootOrder: 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!222 &2143131043950148924
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5901490667485075336}
m_CullTransparentMesh: 1
--- !u!114 &2502203244671968176
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5901490667485075336}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 189105a42ee74f83ba5487327c2d3580, 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}
--- !u!1 &8105561498018655125
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 447905256063256638}
m_Layer: 5
m_Name: AllPopupViewParent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &447905256063256638
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8105561498018655125}
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_Children: []
m_Father: {fileID: 7902191086218781939}
m_RootOrder: 2
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 &8123687762145987212
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7950361135303092237}
m_Layer: 5
m_Name: AllViewParent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7950361135303092237
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8123687762145987212}
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_Children: []
m_Father: {fileID: 7902191086218781939}
m_RootOrder: 1
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}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 447d04fd4744876439d7ecbc23b378bb
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,181 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &833994241379720352
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4377898872331682893}
- component: {fileID: 6299942527212515272}
- component: {fileID: 2326295212462627523}
m_Layer: 5
m_Name: YIUIView
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4377898872331682893
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 833994241379720352}
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_Children: []
m_Father: {fileID: 1492324068712531958}
m_RootOrder: 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!222 &6299942527212515272
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 833994241379720352}
m_CullTransparentMesh: 1
--- !u!114 &2326295212462627523
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 833994241379720352}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76af6b314c984a70bd77fd9c0d998f89, type: 3}
m_Name:
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: IsSplitData
Entry: 5
Data: false
- Name: PanelSplitData
Entry: 7
Data: 0|YIUIFramework.UIPanelSplitData, UIFramework
- Name: Panel
Entry: 6
Data:
- Name: AllViewParent
Entry: 6
Data:
- Name: AllCommonView
Entry: 7
Data: 1|System.Collections.Generic.List`1[[UnityEngine.RectTransform, UnityEngine.CoreModule]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name: AllCreateView
Entry: 7
Data: 2|System.Collections.Generic.List`1[[UnityEngine.RectTransform, UnityEngine.CoreModule]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name: AllPopupViewParent
Entry: 6
Data:
- Name: AllPopupView
Entry: 7
Data: 3|System.Collections.Generic.List`1[[UnityEngine.RectTransform, UnityEngine.CoreModule]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name: PanelSplitEditorShowData
Entry: 6
Data:
ComponentTable: {fileID: 0}
DataTable: {fileID: 0}
EventTable: {fileID: 0}
PkgName:
ResName:
AllChildCdeTable: []
UICodeType: 1
PanelLayer: 3
PanelOption: 0
CachePanelTime: 10
PanelStackOption: 2
ViewWindowType: 0
ViewStackOption: 2
Priority: 0
CanUseBaseOpen: 0
HaveIOpenNotOpen: 0
RepetitionOpenTween: 0
--- !u!1 &1345877233082766097
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1492324068712531958}
m_Layer: 5
m_Name: YIUIViewParent
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1492324068712531958
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1345877233082766097}
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_Children:
- {fileID: 4377898872331682893}
m_Father: {fileID: 0}
m_RootOrder: 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}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6b31773c2e65c7c4f99b04901dfbdca4
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@@ -0,0 +1,315 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &107851273589969728
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4575161331279522382}
m_Layer: 5
m_Name: YIUILayerRoot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4575161331279522382
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 107851273589969728}
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_Children: []
m_Father: {fileID: 3307274676473996591}
m_RootOrder: 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 &3320555807878081695
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5031679669994249083}
- component: {fileID: 806950166230494048}
m_Layer: 5
m_Name: YIUICamera
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5031679669994249083
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3320555807878081695}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: -1000}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 3307274676473996591}
m_RootOrder: 2
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: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!20 &806950166230494048
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3320555807878081695}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 3
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 100000
field of view: 60
orthographic: 1
orthographic size: 5
m_Depth: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 32
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!1 &3544701634768386755
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3307274676473996591}
- component: {fileID: 3021647286145701893}
- component: {fileID: 4558697600294585377}
- component: {fileID: 1539238890422656936}
m_Layer: 5
m_Name: YIUICanvasRoot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3307274676473996591
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3544701634768386755}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 4575161331279522382}
- {fileID: 534357606011244347}
- {fileID: 5031679669994249083}
m_Father: {fileID: 4265219785936634336}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!223 &3021647286145701893
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3544701634768386755}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 1
m_Camera: {fileID: 806950166230494048}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_AdditionalShaderChannelsFlag: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!114 &4558697600294585377
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3544701634768386755}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!114 &1539238890422656936
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3544701634768386755}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 55
--- !u!1 &4265219785936634351
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4265219785936634336}
m_Layer: 0
m_Name: YIUIRoot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4265219785936634336
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4265219785936634351}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 10000, y: 10000, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 3307274676473996591}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6209852868841851125
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 534357606011244347}
- component: {fileID: 6529233338797111565}
- component: {fileID: 4123557273672320222}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &534357606011244347
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6209852868841851125}
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_Children: []
m_Father: {fileID: 3307274676473996591}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &6529233338797111565
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6209852868841851125}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier:
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!114 &4123557273672320222
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6209852868841851125}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalAxis: Horizontal
m_VerticalAxis: Vertical
m_SubmitButton: Submit
m_CancelButton: Cancel
m_InputActionsPerSecond: 10
m_RepeatDelay: 0.5
m_ForceModuleActive: 0

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 336cf21ad876fd94a97988ec9129d39f
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: ce7c5ee18dcd43e1827d99738fbdfe98
timeCreated: 1682072802

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b86f0c73d94b413988ec0aaedc62e686
timeCreated: 1682072802

View File

@@ -0,0 +1,23 @@
#if UNITY_EDITOR
using Sirenix.OdinInspector;
namespace YIUIFramework.Editor
{
/// <summary>
/// 基类 自动创建模块
/// 由其他模块继承后实现
/// </summary>
[HideReferenceObjectPicker]
public abstract class BaseCreateModule
{
public virtual void Initialize()
{
}
public virtual void OnDestroy()
{
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cfeab8e519934f158c7b54184d5af922
timeCreated: 1682072802

View File

@@ -0,0 +1,258 @@
#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace YIUIFramework.Editor
{
public struct CreateVo
{
/// <summary>
/// 只能是.txt 的模板
/// 重写文件不需要模板
/// </summary>
public string TemplatePath;
/// <summary>
/// 文件保存的位置
/// </summary>
public string SavePath;
public CreateVo(string templatePath, string savePath)
{
TemplatePath = templatePath;
SavePath = savePath;
}
}
public abstract class BaseTemplate
{
/// <summary>
/// 这个模板动作的名称
/// 作用于提示信息
/// </summary>
public virtual string EventName => "";
protected CreateVo CreateVo;
//常规新文件用字典
protected Dictionary<string, string> ValueDic;
public BaseTemplate(string authorName)
{
var dt = DateTime.Now;
ValueDic = new Dictionary<string, string>();
ValueDic["Author"] = authorName;
ValueDic["CreateDate"] = $"{dt.Year}.{dt.Month}.{dt.Day}";
}
/// <summary>
/// 是否覆盖 如果存在的情况下
/// 写入新文件时可用
/// </summary>
public virtual bool Cover => true;
/// <summary>
/// 其他是否保留
/// 重写文件时可用
/// </summary>
public virtual bool OtherRetain => true;
/// <summary>
/// 如果值已存在是否跳过
/// 重写文件时可用
/// </summary>
public virtual bool ExistSkip => true;
/// <summary>
/// 完成后自动刷新
/// </summary>
public virtual bool AutoRefresh => true;
/// <summary>
/// 提示
/// </summary>
public virtual bool ShowTips => true;
/// <summary>
/// 根据模板创建一个新文件
/// </summary>
/// <returns></returns>
protected bool CreateNewFile()
{
if (TemplateEngine.FileExists(CreateVo.SavePath))
{
if (!Cover)
{
if (ShowTips)
{
var code = $"文件已存在 当前选择已存在不覆盖 {CreateVo.SavePath}";
Debug.LogError(code);
EditorUtility.DisplayDialog("提示", code, "确认");
}
return false;
}
}
if (!TemplateEngine.CreateCodeFile(CreateVo.SavePath, CreateVo.TemplatePath, ValueDic))
{
EditorUtility.DisplayDialog("提示", CreateVo.SavePath + "创建失败", "确认");
TemplateEngine.TemplateBasePath = null;
return false;
}
if (ShowTips)
{
EditorUtility.DisplayDialog("提示", $"{EventName} 处理完毕", "确认");
}
if (AutoRefresh)
{
AssetDatabase.Refresh();
}
return true;
}
/// <summary>
/// 重写文件
/// 指定区域内的都会被重写 不存在检查 是否重复的情况
/// 这种使用一般是这块区域就是固定的区域不允许玩家乱写的
/// </summary>
/// <returns></returns>
protected bool OverrideCodeFile()
{
if (!TemplateEngine.FileExists(CreateVo.SavePath))
{
if (ShowTips)
{
var code = $"文件不存在 无法重写 {CreateVo.SavePath}";
Debug.LogError(code);
EditorUtility.DisplayDialog("提示", code, "确认");
}
return false;
}
if (!TemplateEngine.OverrideCodeFile(CreateVo.SavePath, ValueDic, OtherRetain))
{
EditorUtility.DisplayDialog("提示", CreateVo.SavePath + "创建失败", "确认");
TemplateEngine.TemplateBasePath = null;
return false;
}
if (ShowTips)
{
EditorUtility.DisplayDialog("提示", $"{EventName} 处理完毕", "确认");
}
if (AutoRefresh)
{
AssetDatabase.Refresh();
}
return true;
}
/// <summary>
/// 区域内重写文件
/// 但是会检查 如果我要写的东西已经存在了就不写了
/// 如: 我要提供一个方法给玩家 如果这个方法已经存在了就不检查了 否则我就会创建一个新的方法
/// 使用此方法需要吧上面的 OverrideDic 赋值
/// </summary>
/// <returns></returns>
protected bool OverrideCheckCodeFile(Dictionary<string, List<Dictionary<string, string>>> overrideDic)
{
if (!TemplateEngine.FileExists(CreateVo.SavePath))
{
if (ShowTips)
{
var code = $"文件不存在 无法重写 {CreateVo.SavePath}";
Debug.LogError(code);
EditorUtility.DisplayDialog("提示", code, "确认");
}
return false;
}
if (overrideDic == null)
{
Debug.LogError("替换数据无值 无法操作 OverrideDic == null");
return false;
}
if (overrideDic.Count >= 1)
{
if (!TemplateEngine.OverrideCheckCodeFile(CreateVo.SavePath, overrideDic))
{
EditorUtility.DisplayDialog("提示", CreateVo.SavePath + "创建失败", "确认");
TemplateEngine.TemplateBasePath = null;
return false;
}
}
if (ShowTips)
{
EditorUtility.DisplayDialog("提示", $"{EventName} 处理完毕", "确认");
}
if (AutoRefresh)
{
AssetDatabase.Refresh();
}
return true;
}
}
/// <summary>
/// 这是一个案例 只需要new这个类 即可进行一系列模板操作
/// 创建一个新文件时
/// </summary>
public class TestTemplate : BaseTemplate
{
public override string EventName => "测试案例一 创建新文件";
public override bool Cover => false;
public TestTemplate(string authorName, string moduleName, string pkgName, string resName) : base(authorName)
{
CreateVo = new CreateVo(
"Assets/.../Template/BasePanelTemplate.txt",
$"Assets/../{moduleName}/UI/{resName}.cs");
ValueDic["moduleName"] = moduleName;
ValueDic["uiPkgName"] = pkgName;
ValueDic["uiResName"] = resName;
CreateNewFile();
}
}
/// <summary>
/// 这是一个案例 只需要new这个类 即可进行一系列模板操作
/// 重写文件内容
/// </summary>
public class TestTemplate2 : BaseTemplate
{
public override string EventName => "测试案例二 重写文件内容";
//public override bool OtherRetain => false;
public TestTemplate2(string authorName, string moduleName, string pkgName, string resName) : base(authorName)
{
CreateVo = new CreateVo(
"Assets/.../Template/BasePanelTemplate.txt",
$"Assets/../{moduleName}/UI/{resName}.cs");
ValueDic["moduleName"] = moduleName;
ValueDic["uiPkgName"] = pkgName;
ValueDic["uiResName"] = resName;
ValueDic["AA"] = "//我替换的东西"; //的相当于 标记为AA 这个范围内的所有东西都会被清空 替换我指定的内容
OverrideCodeFile();
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f7bdf42418084424ae03d52c0f0f7054
timeCreated: 1682072802

View File

@@ -0,0 +1,81 @@
#if UNITY_EDITOR
using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor;
using Sirenix.Serialization;
using Sirenix.Utilities.Editor;
using UnityEngine;
namespace YIUIFramework.Editor
{
[HideReferenceObjectPicker]
public abstract class BaseTreeMenuItem : BaseYIUIToolModule
{
private bool m_InitEnd;
protected BaseTreeMenuItem(OdinMenuEditorWindow autoTool, OdinMenuTree tree)
{
AutoTool = autoTool;
Tree = tree;
}
public override void SelectionMenu()
{
Init();
Select();
}
private void Init()
{
if (m_InitEnd) return;
Initialize();
m_InitEnd = true;
}
protected abstract void Select();
}
[HideReferenceObjectPicker]
public class TreeMenuItem<T> : BaseTreeMenuItem where T : BaseYIUIToolModule, new()
{
[ShowInInspector]
[HideLabel]
[HideReferenceObjectPicker]
public T Instance { get; internal set; }
public TreeMenuItem(OdinMenuEditorWindow autoTool, OdinMenuTree tree, string menuName, Texture icon) : base(autoTool,
tree)
{
Tree.Add(menuName, this, icon);
ModuleName = menuName;
}
public TreeMenuItem(OdinMenuEditorWindow autoTool, OdinMenuTree tree, string menuName, EditorIcon icon) : base(autoTool,
tree)
{
Tree.Add(menuName, this, icon);
ModuleName = menuName;
}
public override void Initialize()
{
Instance = new T
{
AutoTool = AutoTool,
Tree = Tree,
ModuleName = ModuleName,
};
Instance?.Initialize();
}
public override void OnDestroy()
{
Instance?.OnDestroy();
}
protected override void Select()
{
Instance?.SelectionMenu();
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7f3c764c80144560912d8b94b49cae88
timeCreated: 1687313986

View File

@@ -0,0 +1,25 @@
#if UNITY_EDITOR
using Sirenix.OdinInspector;
using Sirenix.OdinInspector.Editor;
using UnityEngine;
namespace YIUIFramework.Editor
{
[HideReferenceObjectPicker]
public class BaseYIUIToolModule : BaseCreateModule
{
[HideInInspector]
public OdinMenuEditorWindow AutoTool { get; internal set; }
[HideInInspector]
public OdinMenuTree Tree { get; internal set; }
[HideInInspector]
public string ModuleName { get; internal set; }
public virtual void SelectionMenu()
{
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b1bec234919e457d8aeed77ba912acc2
timeCreated: 1687314924

View File

@@ -0,0 +1,333 @@
#if UNITY_EDITOR
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using UnityEditor;
using UnityEngine;
using Debug = UnityEngine.Debug;
namespace YIUIFramework.Editor
{
/// <summary>
/// 编辑器工具可能会用到的各种工具
/// </summary>
public static class EditorHelper
{
/// <summary>
/// 得到对应dll名字内所有type的集合
/// 例: GetTypesByAssembly("Framework.dll")
/// </summary>
/// <param name="assemblyNames"></param>
/// <returns></returns>
public static Type[] GetTypesByAssemblyName(params string[] assemblyNames)
{
return AppDomain.CurrentDomain.GetTypesByAssemblyName(assemblyNames);
}
/// <summary>
/// 执行批处理文件
/// </summary>
/// <param name="path"></param>
/// <param name="param"></param>
/// <param name="openFolder"></param>
public static void DoBat(string path, string param = null, string openFolder = null)
{
try
{
if (string.IsNullOrEmpty(param))
{
Process.Start(GetProjPath(path));
}
else
{
Process.Start(GetProjPath(path), param);
}
if (openFolder != null)
{
OpenFileOrFolder(GetProjPath(openFolder));
}
}
catch (Exception ex)
{
Debug.Log(ex.ToString());
}
}
/// <summary>
/// 打开文件或文件夹
/// </summary>
/// <param name="path"></param>
public static void OpenFileOrFolder(string path)
{
Process.Start("explorer.exe", path.Replace("/", "\\"));
}
/// <summary>
/// 得到项目绝对路径
/// eg:
/// GetProjPath("") //out: "E:/project/igg/col3/UnityProjectWithDll"
/// GetProjPath("Assets") //out: "E:/project/igg/col3/UnityProjectWithDll/Assets"
/// </summary>
/// <returns></returns>
public static string GetProjPath(string relativePath = "")
{
if (relativePath == null)
{
relativePath = "";
}
relativePath = relativePath.Trim();
if (!string.IsNullOrEmpty(relativePath))
{
if (relativePath.Contains("\\"))
{
relativePath = relativePath.Replace("\\", "/");
}
if (!relativePath.StartsWith("/"))
{
relativePath = "/" + relativePath;
}
}
string projFolder = Application.dataPath;
return projFolder.Substring(0, projFolder.Length - 7) + relativePath;
}
public static Type[] GetTypesByInterface(string fullName)
{
return AppDomain.CurrentDomain.GetAssemblies().SelectMany(a =>
{
return a.GetTypes().Where(t => GetInterfaceByName(t, fullName) != null);
}).ToArray();
}
public static Type GetInterfaceByName(Type type, string fullName)
{
var interfaces = type.GetInterfaces();
if (interfaces.Length < 1)
{
return null;
}
foreach (Type interfaceType in interfaces)
{
if (interfaceType.FullName != null && interfaceType.FullName.StartsWith(fullName))
{
return interfaceType;
}
}
return null;
}
public static string PlatformName
{
get
{
string platformName = "";
switch (EditorUserBuildSettings.activeBuildTarget)
{
case BuildTarget.Android:
platformName = "Android";
break;
case BuildTarget.iOS:
platformName = "iOS";
break;
default:
platformName = "Windows";
break;
}
return platformName;
}
}
/// <summary>
/// 用于查找某个只知道名字的文件在什么位置
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static string[] GetAssetPaths(string name)
{
var paths = AssetDatabase.FindAssets(name);
for (int i = 0; i < paths.Length; i++)
{
paths[i] = AssetDatabase.GUIDToAssetPath(paths[i]);
}
return paths;
}
/// <summary>
/// 在项目文件内写入文件
/// </summary>
public static bool WriteAllText(string path, string contents, bool log = false)
{
try
{
path = GetProjPath(path);
var dir = Path.GetDirectoryName(path);
if (dir == null)
{
Debug.LogError("dir == null");
return false;
}
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
File.WriteAllText(path, contents, Encoding.UTF8);
if (log)
Debug.Log(path + "创建成功");
return true;
}
catch (Exception e)
{
Debug.LogError("写入文件失败: path =" + path + ", err=" + e);
return false;
}
}
public static string ReadAllText(string path)
{
try
{
path = GetProjPath(path);
if (!File.Exists(path))
{
return null;
}
return File.ReadAllText(path);
}
catch (Exception e)
{
Debug.LogError("读取文件失败: path =" + path + ", err=" + e);
return null;
}
}
public static bool WriteAllBytes(string path, byte[] bytes, bool log = false)
{
try
{
path = GetProjPath(path);
var dir = Path.GetDirectoryName(path);
if (dir == null)
{
Debug.LogError("dir == null");
return false;
}
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
File.WriteAllBytes(path, bytes);
if (log)
Debug.Log(path + "创建成功");
return true;
}
catch (Exception e)
{
Debug.LogError("写入文件失败: path =" + path + ", err=" + e);
return false;
}
}
public static byte[] ReadAllBytes(string path)
{
try
{
path = GetProjPath(path);
if (!File.Exists(path))
{
return null;
}
return File.ReadAllBytes(path);
}
catch (Exception e)
{
Debug.LogError("读取文件失败: path =" + path + ", err=" + e);
return null;
}
}
/// <summary>
/// 是否忽略
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static bool IsFileIgnore(string path)
{
return path.EndsWith(".meta")
|| path.EndsWith(".manifest")
|| path.Contains(".DS_Store");
}
// ----------------------------------------------------------------------------------------
/// <summary>
/// 进度条界面更新
/// </summary>
/// <param name="title">标题</param>
/// <param name="message">内容</param>
/// <param name="current">当前进度</param>
/// <param name="total">总进度</param>
public static void DisplayProgressBar(string title, string message, int current, int total)
{
float progress = 0;
if (total != 0)
{
progress = Mathf.InverseLerp(0, total, current);
message = string.Format("{0} {1}/{2}", message, current + 1, total);
}
EditorUtility.DisplayProgressBar(title, message, progress);
}
/// <summary>
/// 关闭进度
/// </summary>
public static void ClearProgressBar()
{
EditorUtility.ClearProgressBar();
}
//检查目标路径文件夹是否存在
public static bool ExistsDirectory(string path)
{
return Directory.Exists(GetProjPath(path));
}
//检查文件夹 不存在则创建
public static void CreateExistsDirectory(string path, bool checkDirectory = false)
{
path = GetProjPath(path);
if (checkDirectory)
{
path = Path.GetDirectoryName(path);
if (path == null)
{
Debug.LogError($" {path} dir == null");
return;
}
}
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b348c4e9679e4b238dd2840884fafdd7
timeCreated: 1682072802

View File

@@ -0,0 +1,453 @@
#if UNITY_EDITOR
using System;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Text;
using UnityEngine;
namespace YIUIFramework.Editor
{
/// <summary>
/// 简单的模板引擎, 主要用在编辑器上
/// </summary>
public class TemplateEngine
{
private static readonly Dictionary<string, string> g_templateCacheMap = new Dictionary<string, string>();
/// <summary>
/// 模板文件的基础路径
/// eg: Assets/Ediotr/Config/Decoder/Template/
/// 注意: 前面不要“/”,后央要“/”
/// </summary>
public static string TemplateBasePath;
private const string m_StartSignFormat = "#region {0}开始";
private const string m_EndSignFormat = "#endregion {0}结束";
/// <summary>
/// 处理模板
/// </summary>
/// <param name="templatePath"></param>
/// <param name="valueDic"></param>
/// <param name="valueDic2"></param>
/// <param name="readTemplateCache"></param>
/// <returns></returns>
public static string Do(string templatePath, Dictionary<string, string> valueDic,
Dictionary<string, string> valueDic2, bool readTemplateCache = true)
{
if (!string.IsNullOrEmpty(TemplateBasePath))
{
if (TemplateBasePath.Contains("Assets/") && templatePath.Contains("Assets/"))
{
templatePath = templatePath.Replace("Assets/", "");
}
templatePath = TemplateBasePath + templatePath;
}
string templateStr = null;
if (readTemplateCache)
{
g_templateCacheMap.TryGetValue(templatePath, out templateStr);
}
if (templateStr == null)
{
string path = EditorHelper.GetProjPath(templatePath);
try
{
templateStr = File.ReadAllText(path);
}
catch (Exception e)
{
Debug.LogError("读取文件失败: " + e);
return null;
}
g_templateCacheMap[templatePath] = templateStr;
}
if (valueDic != null)
{
foreach (KeyValuePair<string, string> pair in valueDic)
{
templateStr = templateStr.Replace("${" + pair.Key + "}", pair.Value);
}
}
if (valueDic2 != null)
{
foreach (KeyValuePair<string, string> pair in valueDic2)
{
templateStr = templateStr.Replace("${" + pair.Key + "}", pair.Value);
}
}
return templateStr;
}
/// <summary>
/// 处理列表类型模板
/// </summary>
/// <typeparam name="TItemType"></typeparam>
/// <param name="itemTemplateStr"></param>
/// <param name="list"></param>
/// <param name="fieldOrPropNames"></param>
/// <param name="afterProcessItem">后处理函数</param>
/// <returns></returns>
public static string DoList<TItemType>(string itemTemplateStr, TItemType[] list, string[] fieldOrPropNames,
Func<string, TItemType, string> afterProcessItem = null)
{
Type itemType = typeof(TItemType);
int len = list.Length;
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++)
{
TItemType item = list[i];
string template = itemTemplateStr;
foreach (string name in fieldOrPropNames)
{
string tName = "${" + name + "}";
FieldInfo fi = itemType.GetField(name);
if (fi != null)
{
template = template.Replace(tName, fi.GetValue(item).ToString());
continue;
}
PropertyInfo pi = itemType.GetProperty(name);
if (pi == null)
{
Debug.LogWarning($"no {name} fields or attributes in the {itemType}");
continue;
}
template = template.Replace(tName, pi.GetValue(item, null).ToString());
}
if (afterProcessItem != null)
{
template = afterProcessItem(template, item);
}
sb.Append(template);
}
return sb.ToString();
}
/// <summary>
/// 检查目标文件是否存在
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static bool FileExists(string path)
{
try
{
path = path.Contains("Assets/") ? path : "Assets/" + path;
path = EditorHelper.GetProjPath(path);
return File.Exists(path);
}
catch (Exception e)
{
Debug.LogError("检查目标文件是否存在失败: path =" + path + ", err=" + e);
return false;
}
}
public static bool CreateCodeFile(string path, string templateName, Dictionary<string, string> valueDic)
{
templateName = templateName.Contains("Assets/") ? templateName : "Assets/" + templateName;
templateName = templateName.Contains(".txt") ? templateName : templateName + ".txt";
string clsStr = Do(templateName, valueDic, null, false);
if (clsStr == null)
{
Debug.LogError("模板转化失败, templateName:" + templateName);
return false;
}
try
{
path = path.Contains("Assets/") ? path : "Assets/" + path;
path = EditorHelper.GetProjPath(path);
string dir = Path.GetDirectoryName(path);
if (dir == null)
{
Debug.LogError("dir == null");
return false;
}
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
File.WriteAllText(path, clsStr, Encoding.UTF8);
Debug.Log(path + "创建成功");
return true;
}
catch (Exception e)
{
Debug.LogError("创建代码文件失败: path =" + path + ", err=" + e);
return false;
}
}
/// <summary>
/// 使用Unity #region 为标识的替换规则
/// 在#region >> #endregion 这块区域内查找规则替换
/// </summary>
/// <param name="otherRetain">标记中的其他的是否保留</param>
/// <returns></returns>
private static bool RegionReplace(string path, KeyValuePair<string, string> pair, bool otherRetain = true)
{
//获取文件
if (path != null)
{
StringBuilder stringBuilder = new StringBuilder();
StreamReader streamReader = new StreamReader(path);
string line = streamReader.ReadLine();
bool isWrite = false; //标记中途是否检查到已经写入过这个字段 防止重复
string startStr = string.Format(m_StartSignFormat, pair.Key);
string endStr = string.Format(m_EndSignFormat, pair.Key);
while (line != null)
{
if (line.IndexOf(startStr) > -1)
{
isWrite = true;
stringBuilder.Append(line + "\n");
}
else if (line.IndexOf(endStr) > -1)
{
if (isWrite)
{
stringBuilder.Append($"{pair.Value}\n");
isWrite = false;
}
stringBuilder.Append(line + "\n");
}
else
{
if (isWrite)
{
if (line.IndexOf(pair.Value) > -1)
{
isWrite = false;
}
if (otherRetain)
{
stringBuilder.Append(line + "\n");
}
}
else
{
stringBuilder.Append(line + "\n");
}
}
line = streamReader.ReadLine();
}
streamReader.Close();
StreamWriter streamWriter = new StreamWriter(path);
streamWriter.Write(stringBuilder.ToString());
streamWriter.Close();
}
else
{
Debug.LogError($"没有读取到{path}文件,请检查是否生成");
return false;
}
return true;
}
/// <summary>
/// 重写文件
/// 根据标识的范围重写
/// </summary>
/// <param name="path">精准路径 Assets/ ... XX.CS(扩展名)</param>
/// <param name="valueDic">精准替换的范围与值</param>
/// <param name="otherRetain">范围内的是否保留 默认保留 否则会覆盖</param>
/// <returns></returns>
public static bool OverrideCodeFile(string path, Dictionary<string, string> valueDic, bool otherRetain = true)
{
path = path.Contains("Assets/") ? path : "Assets/" + path;
path = EditorHelper.GetProjPath(path);
foreach (var pair in valueDic)
{
if (!RegionReplace(path, pair, otherRetain))
{
return false;
}
}
return true;
}
/// <summary>
/// 指定区域内进行检查写入
/// 需要区域内不存在才写入
/// </summary>
private static bool RegionCheckReplace2(string path, string signKey, string checkContent, string valueContent,
bool otherRetain = true)
{
//获取文件
if (path != null)
{
StringBuilder stringBuilder = new StringBuilder();
StreamReader streamReader = new StreamReader(path);
string line = streamReader.ReadLine();
bool checkExist = false; //检查是否已经存在 如果已经存在则不重写 否则需要重写
bool isWrite = false; //标记中途是否检查到已经写入过这个字段 防止重复
string startStr = string.Format(m_StartSignFormat, signKey);
string endStr = string.Format(m_EndSignFormat, signKey);
while (line != null)
{
if (line.IndexOf(startStr) > -1)
{
isWrite = true;
stringBuilder.Append(line + "\n");
}
else if (line.IndexOf(endStr) > -1)
{
if (isWrite)
{
if (!checkExist)
{
stringBuilder.Append($"{valueContent}\n");
}
isWrite = false;
}
stringBuilder.Append(line + "\n");
}
else
{
if (isWrite)
{
if (line.IndexOf(checkContent) > -1)
{
checkExist = true;
}
if (otherRetain)
{
stringBuilder.Append(line + "\n");
}
}
else
{
stringBuilder.Append(line + "\n");
}
}
line = streamReader.ReadLine();
}
streamReader.Close();
StreamWriter streamWriter = new StreamWriter(path);
streamWriter.Write(stringBuilder.ToString());
streamWriter.Close();
}
else
{
Debug.LogError($"没有读取到{path}文件,请检查是否生成");
return false;
}
return true;
}
/// <summary>
/// 指定区域内进行检查写入
/// 需要区域内不存在才写入
/// </summary>
public static bool OverrideCheckCodeFile(string path,
Dictionary<string, List<Dictionary<string, string>>> replaceDic)
{
string clsStr = RegionCheckReplace(path, replaceDic);
if (clsStr == null)
{
Debug.LogError("模板转化失败, path:" + path);
return false;
}
try
{
path = path.Contains("Assets/") ? path : "Assets/" + path;
path = EditorHelper.GetProjPath(path);
string dir = Path.GetDirectoryName(path);
if (dir == null)
{
Debug.LogError("dir == null");
return false;
}
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
File.WriteAllText(path, clsStr, Encoding.UTF8);
Debug.Log(path + "重写成功");
return true;
}
catch (Exception e)
{
Debug.LogError("重写文件失败: path =" + path + ", err=" + e);
return false;
}
}
/// <summary>
/// 指定区域内进行检查写入
/// 需要区域内不存在才写入
/// </summary>
private static string RegionCheckReplace(string path,
Dictionary<string, List<Dictionary<string, string>>> replaceDic)
{
var templateStr = File.ReadAllText(path);
foreach (var item in replaceDic)
{
var key = item.Key;
var valueList = item.Value;
foreach (var data in valueList)
{
foreach (var ovDic in data)
{
var check = ovDic.Key;
var content = ovDic.Value;
string startStr = string.Format(m_StartSignFormat, key);
string endStr = string.Format(m_EndSignFormat, key);
var startIndex = templateStr.IndexOf(startStr);
var endIndex = templateStr.IndexOf(endStr);
if (startIndex > -1 && endIndex > startIndex)
{
var tempStr = templateStr.Substring(startIndex, endIndex - startIndex);
if (tempStr.IndexOf(check) <= -1)
{
templateStr = templateStr.Insert(endIndex - 1, content);
}
}
}
}
}
return templateStr;
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 00764f38f6cb4f5581961ad7a095d592
timeCreated: 1682072802

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e09294af364e4e1faea270c926f2bf5a
timeCreated: 1682072802

View File

@@ -0,0 +1,22 @@
using YIUIFramework;
namespace YIUICodeGenerated
{
/// <summary>
/// 由YIUI工具自动创建 请勿手动修改
/// 用法: UIBindHelper.InternalGameGetUIBindVoFunc = YIUICodeGenerated.UIBindProvider.Get;
/// </summary>
public static class UIBindProvider
{
public static UIBindVo[] Get()
{
var BasePanel = typeof(BasePanel);
var BaseView = typeof(BaseView);
var BaseComponent = typeof(BaseComponent);
var list = new UIBindVo[${Count}];
${Content}
return list;
}
}
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a25f7befce96fe844bfa83d898bc405a
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,37 @@
using System;
using YIUIBind;
using YIUIFramework;
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
namespace ${Namespace}.${PkgName}
{
${PanelViewEnum}
/// <summary>
/// 由YIUI工具自动创建 请勿手动修改
/// </summary>
public abstract class ${ResName}Base:${BaseClass}
{
public const string PkgName = "${PkgName}";
public const string ResName = "${ResName}";
${Variables}
protected sealed override void UIBind()
{
${UIBind}
}
protected sealed override void UnUIBind()
{
${UIUnBind}
}
${VirtualMethod}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: caac8cf83bc548129d3b3c4afd7f7d9d
timeCreated: 1682331049

View File

@@ -0,0 +1,52 @@
using System;
using YIUIBind;
using YIUIFramework;
using UnityEngine;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
namespace ${Namespace}.${PkgName}
{
/// <summary>
/// Author ${Author}
/// Date ${CreateDate}
/// </summary>
public sealed partial class ${ResName}:${ResName}Base
{
#region 生命周期
protected override void Initialize()
{
Debug.Log($"${ResName} Initialize");
}
protected override void Start()
{
Debug.Log($"${ResName} Start");
}
protected override void OnEnable()
{
Debug.Log($"${ResName} OnEnable");
}
protected override void OnDisable()
{
Debug.Log($"${ResName} OnDisable");
}
protected override void OnDestroy()
{
Debug.Log($"${ResName} OnDestroy");
}
#endregion
#region Event开始
#endregion Event结束
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 12238d3c085d45b6bbbbb40d1648469c
timeCreated: 1683872468

View File

@@ -0,0 +1,23 @@
using System;
using YIUIBind;
using YIUIFramework;
using UnityEngine;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
namespace ${Namespace}.${PkgName}
{
/// <summary>
/// Author ${Author}
/// Date ${CreateDate}
/// </summary>
public sealed partial class ${ResName}:${ResName}Base
{
#region Event开始
#endregion Event结束
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e72a3dde57eb45c29f8094fe470ba195
timeCreated: 1687766004

View File

@@ -0,0 +1,59 @@
using System;
using YIUIBind;
using YIUIFramework;
using UnityEngine;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
namespace ${Namespace}.${PkgName}
{
/// <summary>
/// Author ${Author}
/// Date ${CreateDate}
/// </summary>
public sealed partial class ${ResName}:${ResName}Base
{
#region 生命周期
protected override void Initialize()
{
Debug.Log($"${ResName} Initialize");
}
protected override void Start()
{
Debug.Log($"${ResName} Start");
}
protected override void OnEnable()
{
Debug.Log($"${ResName} OnEnable");
}
protected override void OnDisable()
{
Debug.Log($"${ResName} OnDisable");
}
protected override void OnDestroy()
{
Debug.Log($"${ResName} OnDestroy");
}
protected override async UniTask<bool> OnOpen()
{
await UniTask.CompletedTask;
Debug.Log($"${ResName} OnOpen");
return true;
}
protected override async UniTask<bool> OnOpen(ParamVo param)
{
return await base.OnOpen(param);
}
#endregion
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e5b53197a6284bcba9069c51e27dda06
timeCreated: 1687766052

View File

@@ -0,0 +1,19 @@
using System;
using YIUIBind;
using YIUIFramework;
using UnityEngine;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
namespace ${Namespace}.${PkgName}
{
/// <summary>
/// Author ${Author}
/// Date ${CreateDate}
/// </summary>
public sealed partial class ${ResName}:${ResName}Base
{
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 07063168d2c0438786227126df5ebc77
timeCreated: 1687765972

View File

@@ -0,0 +1,64 @@
using System;
using YIUIBind;
using YIUIFramework;
using UnityEngine;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
namespace ${Namespace}.${PkgName}
{
/// <summary>
/// Author ${Author}
/// Date ${CreateDate}
/// </summary>
public sealed partial class ${ResName}:${ResName}Base
{
#region 生命周期
protected override void Initialize()
{
Debug.Log($"${ResName} Initialize");
}
protected override void Start()
{
Debug.Log($"${ResName} Start");
}
protected override void OnEnable()
{
Debug.Log($"${ResName} OnEnable");
}
protected override void OnDisable()
{
Debug.Log($"${ResName} OnDisable");
}
protected override void OnDestroy()
{
Debug.Log($"${ResName} OnDestroy");
}
protected override async UniTask<bool> OnOpen()
{
await UniTask.CompletedTask;
Debug.Log($"${ResName} OnOpen");
return true;
}
protected override async UniTask<bool> OnOpen(ParamVo param)
{
return await base.OnOpen(param);
}
#endregion
#region Event开始
#endregion Event结束
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 72d669744369464f999a6b7962f9218f
timeCreated: 1682425924

View File

@@ -0,0 +1,16 @@
using Sirenix.OdinInspector;
namespace YIUIFramework
{
/// <summary>
/// 红点系统 所有key枚举
/// 由YIUI工具自动创建 请勿手动修改
/// </summary>
public enum ERedDotKeyType
{
[LabelText("无")]
None = 0,
${Content}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e88d92706f5748ada350a2fed78c04d2
timeCreated: 1686711524

View File

@@ -0,0 +1,64 @@
using System;
using YIUIBind;
using YIUIFramework;
using UnityEngine;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
namespace ${Namespace}.${PkgName}
{
/// <summary>
/// Author ${Author}
/// Date ${CreateDate}
/// </summary>
public sealed partial class ${ResName}:${ResName}Base
{
#region 生命周期
protected override void Initialize()
{
Debug.Log($"${ResName} Initialize");
}
protected override void Start()
{
Debug.Log($"${ResName} Start");
}
protected override void OnEnable()
{
Debug.Log($"${ResName} OnEnable");
}
protected override void OnDisable()
{
Debug.Log($"${ResName} OnDisable");
}
protected override void OnDestroy()
{
Debug.Log($"${ResName} OnDestroy");
}
protected override async UniTask<bool> OnOpen()
{
await UniTask.CompletedTask;
Debug.Log($"${ResName} OnOpen");
return true;
}
protected override async UniTask<bool> OnOpen(ParamVo param)
{
return await base.OnOpen(param);
}
#endregion
#region Event开始
#endregion Event结束
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 05b0c9f335e1426f98d609ab085ed2f7
timeCreated: 1682427179

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: cccf05fdce24462190e60388124c6627
timeCreated: 1682072802

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 3dfa09fd43e848388276d9c43db382b8
timeCreated: 1682073471

View File

@@ -0,0 +1,16 @@
#if UNITY_EDITOR
using System;
using Sirenix.OdinInspector;
using UnityEngine;
namespace YIUIFramework.Editor
{
[HideReferenceObjectPicker]
public class CreateUIBaseEditorData
{
public CreateUIBaseEditorData()
{
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 857571c30a5d48a29f516b45a7ceb3b2
timeCreated: 1682073645

View File

@@ -0,0 +1,83 @@
#if UNITY_EDITOR
using System.IO;
using Sirenix.OdinInspector;
using UnityEditor;
using UnityEngine;
using YIUIBind;
namespace YIUIFramework.Editor
{
/// <summary>
/// UIBase 模块
/// </summary>
[HideReferenceObjectPicker]
public class CreateUIBaseModule : BaseCreateModule
{
[LabelText("YIUI项目命名空间")]
[ShowInInspector]
[ReadOnly]
private const string UINamespace = UIStaticHelper.UINamespace;
[LabelText("YIUI项目资源路径")]
[FolderPath]
[ShowInInspector]
[ReadOnly]
private const string UIProjectResPath = UIStaticHelper.UIProjectResPath;
[LabelText("YIUI项目脚本路径")]
[FolderPath]
[ShowInInspector]
[ReadOnly]
private const string UIGenerationPath = UIStaticHelper.UIGenerationPath;
[LabelText("YIUI项目自定义脚本路径")]
[FolderPath]
[ShowInInspector]
[ReadOnly]
private const string UICodeScriptsPath = UIStaticHelper.UICodeScriptsPath;
[HideLabel]
[ShowInInspector]
private CreateUIBaseEditorData UIBaseData = new CreateUIBaseEditorData();
public override void Initialize()
{
}
public override void OnDestroy()
{
}
private const string m_CommonPkg = "Common";
[Button("初始化项目")]
private void CreateProject()
{
if (!UIOperationHelper.CheckUIOperation()) return;
EditorHelper.CreateExistsDirectory(UIGenerationPath);
EditorHelper.CreateExistsDirectory(UIProjectResPath);
EditorHelper.CreateExistsDirectory(UICodeScriptsPath);
UICreateResModule.Create(m_CommonPkg); //默认初始化一个common模块
CopyUIRoot();
YIUIAutoTool.CloseWindowRefresh();
}
private void CopyUIRoot()
{
var loadRoot = (GameObject)AssetDatabase.LoadAssetAtPath(UIStaticHelper.UIRootPrefabPath, typeof(Object));
if (loadRoot == null)
{
Debug.LogError($"没有找到原始UIRoot {UIStaticHelper.UIRootPrefabPath}");
return;
}
var newGameObj = Object.Instantiate(loadRoot);
var commonPath =
$"{UIProjectResPath}/{m_CommonPkg}/{UIStaticHelper.UIPrefabs}/{PanelMgr.UIRootName}.prefab";
PrefabUtility.SaveAsPrefabAsset(newGameObj, commonPath);
Object.DestroyImmediate(newGameObj);
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6913ce2107d149458c075785522ace50
timeCreated: 1682073504

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 32a9ec9230724308bfe8c99f510bc0f5
timeCreated: 1682230391

View File

@@ -0,0 +1,32 @@
#if UNITY_EDITOR
using System;
using Sirenix.OdinInspector;
using UnityEngine;
namespace YIUIFramework.Editor
{
public class CreateUIBindProviderCode : BaseTemplate
{
public override string EventName => "UI反射动态码";
public override bool Cover => true;
public override bool AutoRefresh => true;
public override bool ShowTips => false;
public CreateUIBindProviderCode(out bool result, string authorName, UIBindProviderData codeData) : base(
authorName)
{
var path = $"{UIStaticHelper.UIGenerationPath}/{codeData.Name}.cs";
var template = $"{UIStaticHelper.UITemplatePath}/UIBindProviderTemplate.txt";
CreateVo = new CreateVo(template, path);
ValueDic["Count"] = codeData.Count.ToString();
ValueDic["Content"] = codeData.Content;
result = CreateNewFile();
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6c93b48396bb49119ba42b57ba2f4259
timeCreated: 1682231267

View File

@@ -0,0 +1,85 @@
using System;
using System.Collections;
using Sirenix.OdinInspector;
using YIUIBind;
using UnityEditor;
#if UNITY_EDITOR
using UnityEngine;
namespace YIUIFramework.Editor
{
/// <summary>
/// UI反射动态生成模板
/// </summary>
[HideReferenceObjectPicker]
public class CreateUIBindProviderModule : BaseCreateModule
{
[Button("UI自动生成绑定替代反射代码", 50), GUIColor(0.4f, 0.8f, 1)]
public void Create()
{
if (!UIOperationHelper.CheckUIOperation()) return;
var codeData = GenCodeByType(typeof(UIBindProvider));
if (codeData == null) return;
new CreateUIBindProviderCode(out var result, YIUIAutoTool.Author, codeData);
if (result)
{
UnityTipsHelper.CallBackOk("UI自动生成绑定替代反射代码 生成完毕", YIUIAutoTool.CloseWindowRefresh);
}
}
private static UIBindProviderData GenCodeByType(Type type)
{
var codeGenObj = Activator.CreateInstance(type);
var getFunInfo = type.GetMethod("Get");
if (getFunInfo == null)
{
Debug.LogError($"没有这个方法 Get");
return null;
}
var newFunInfo = type.GetMethod("NewCode");
if (newFunInfo == null)
{
Debug.LogError($"没有这个方法 NewCode");
return null;
}
var writeCodeFunInfo = type.GetMethod("WriteCode");
if (writeCodeFunInfo == null)
{
Debug.LogError($"没有这个方法 WriteCode");
return null;
}
var sb = SbPool.Get();
var list = (IList)getFunInfo.Invoke(codeGenObj, Array.Empty<object>());
for (int i = 0; i < list.Count; i++)
{
var data = list[i];
newFunInfo.Invoke(codeGenObj, new[] { data, sb });
sb.AppendFormat("\r list[{0}] = new {1}\r\n", i, data.GetType().Name);
writeCodeFunInfo.Invoke(codeGenObj, new[] { data, sb });
}
if (sb.Length > 2)
{
sb.Remove(sb.Length - 2, 2);
}
var userCode = SbPool.PutAndToStr(sb);
return new UIBindProviderData
{
Namespace = type.Namespace,
FullName = type.FullName,
Name = type.Name,
Count = list.Count,
Content = userCode,
};
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6535747a306143229e52def9ff17f765
timeCreated: 1682231112

View File

@@ -0,0 +1,14 @@
#if UNITY_EDITOR
namespace YIUIFramework.Editor
{
public class UIBindProviderData
{
public string Namespace;
public string FullName;
public string Name;
public int Count;
public string Content;
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 74ad4ffc01ac42d380ab4eb63dbae575
timeCreated: 1682232084

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 215b2ed3aa9f4b969fc500d73e9697d9
timeCreated: 1682328201

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 9ebb664457a64e75a90bd72a6a540174
timeCreated: 1682428309

View File

@@ -0,0 +1,41 @@
#if UNITY_EDITOR
namespace YIUIFramework.Editor
{
public class UICreateBaseCode : BaseTemplate
{
private string m_EventName = "UI核心代码创建";
public override string EventName => m_EventName;
public override bool Cover => true;
private bool m_AutoRefresh = false;
public override bool AutoRefresh => m_AutoRefresh;
private bool m_ShowTips = false;
public override bool ShowTips => m_ShowTips;
public UICreateBaseCode(out bool result, string authorName, UICreateBaseData codeData) : base(authorName)
{
var path = $"{UIStaticHelper.UIGenerationPath}/{codeData.PkgName}/{codeData.ResName}Base.cs";
var template = $"{UIStaticHelper.UITemplatePath}/UICreateBaseTemplate.txt";
CreateVo = new CreateVo(template, path);
m_EventName = $"{codeData.ResName}Base 自动生成";
m_AutoRefresh = codeData.AutoRefresh;
m_ShowTips = codeData.ShowTips;
ValueDic["Namespace"] = codeData.Namespace;
ValueDic["PkgName"] = codeData.PkgName;
ValueDic["ResName"] = codeData.ResName;
ValueDic["BaseClass"] = codeData.BaseClass;
ValueDic["Variables"] = codeData.Variables;
ValueDic["UIBind"] = codeData.UIBind;
ValueDic["UIUnBind"] = codeData.UIUnBind;
ValueDic["VirtualMethod"] = codeData.VirtualMethod;
ValueDic["PanelViewEnum"] = codeData.PanelViewEnum;
result = CreateNewFile();
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 39bdbec62df34ec9a7078313653b58e3
timeCreated: 1682331786

View File

@@ -0,0 +1,20 @@
#if UNITY_EDITOR
namespace YIUIFramework.Editor
{
public class UICreateBaseData
{
public bool AutoRefresh;
public bool ShowTips;
public string Namespace; //命名空间
public string PkgName; //包名/模块名
public string ResName; //资源名 类名+Base
public string BaseClass; //继承什么类 BasePanel/BaseView
public string Variables; //变量
public string UIBind; //绑定方法里面的东西
public string UIUnBind; //解绑里面的东西
public string VirtualMethod; //所有虚方法 Event里面的那些注册方法
public string PanelViewEnum; //枚举生成
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 760b99a79f234c23ada983fa838f6c58
timeCreated: 1682332177

View File

@@ -0,0 +1,125 @@
#if UNITY_EDITOR
using System.Collections.Generic;
using System.Text;
using YIUIBind;
using UnityEngine;
namespace YIUIFramework.Editor
{
/// <summary>
/// 绑定与解绑
/// </summary>
public static class UICreateBind
{
public static string GetBind(UIBindCDETable cdeTable)
{
var sb = SbPool.Get();
cdeTable.GetComponentTable(sb);
cdeTable.GetDataTable(sb);
cdeTable.GetEventTable(sb);
cdeTable.GetCDETable(sb);
return SbPool.PutAndToStr(sb);
}
private static void GetComponentTable(this UIBindCDETable self, StringBuilder sb)
{
var tab = self.ComponentTable;
if (tab == null) return;
foreach (var value in tab.AllBindDic)
{
var name = value.Key;
if (string.IsNullOrEmpty(name)) continue;
var bindCom = value.Value;
if (bindCom == null) continue;
sb.AppendFormat(" {1} = ComponentTable.FindComponent<{0}>(\"{1}\");\r\n", bindCom.GetType(),
name);
}
}
private static void GetDataTable(this UIBindCDETable self, StringBuilder sb)
{
var tab = self.DataTable;
if (tab == null) return;
foreach (var value in tab.DataDic)
{
var name = value.Key;
if (string.IsNullOrEmpty(name)) continue;
var uiData = value.Value;
var dataValue = uiData?.DataValue;
if (dataValue == null) continue;
sb.AppendFormat(" {1} = DataTable.FindDataValue<{0}>(\"{1}\");\r\n", dataValue.GetType(),
name);
}
}
private static void GetEventTable(this UIBindCDETable self, StringBuilder sb)
{
var tab = self.EventTable;
if (tab == null) return;
foreach (var value in tab.EventDic)
{
var name = value.Key;
if (string.IsNullOrEmpty(name)) continue;
var uiEventBase = value.Value;
if (uiEventBase == null) continue;
sb.AppendFormat(" {1} = EventTable.FindEvent<{0}>(\"{1}\");\r\n", uiEventBase.GetEventType(),
name);
sb.AppendFormat(" {0} = {1}.Add({2});\r\n", $"{name}Handle", name,
$"OnEvent{name.Replace($"{NameUtility.FirstName}{NameUtility.EventName}", "")}Action");
}
}
private static void GetCDETable(this UIBindCDETable self, StringBuilder sb)
{
var tab = self.AllChildCdeTable;
if (tab == null) return;
var existName = new HashSet<string>();
foreach (var value in tab)
{
var name = value.name;
if (string.IsNullOrEmpty(name)) continue;
var pkgName = value.PkgName;
var resName = value.ResName;
if (string.IsNullOrEmpty(resName)) continue;
var newName = UICreateVariables.GetCDEUIName(name);
if (existName.Contains(newName))
{
Debug.LogError($"{self.name} 内部公共组件存在同名 请修改 当前会被忽略");
continue;
}
existName.Add(newName);
sb.AppendFormat(" {0} = CDETable.FindUIBase<{1}>(\"{2}\");\r\n",
newName,
$"{UIStaticHelper.UINamespace}.{pkgName}.{resName}",
name);
}
}
public static string GetUnBind(UIBindCDETable cdeTable)
{
var sb = SbPool.Get();
cdeTable.GetUnEventTable(sb);
return SbPool.PutAndToStr(sb);
}
private static void GetUnEventTable(this UIBindCDETable self, StringBuilder sb)
{
var tab = self.EventTable;
if (tab == null) return;
foreach (var value in tab.EventDic)
{
var name = value.Key;
if (string.IsNullOrEmpty(name)) continue;
var uiEventBase = value.Value;
if (uiEventBase == null) continue;
sb.AppendFormat(" {0}.Remove({1});\r\n", name, $"{name}Handle");
}
}
}
}
#endif

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 64950beda6ea407380ad2eff44fa067a
timeCreated: 1682333900

Some files were not shown because too many files have changed in this diff Show More