三国卡牌客户端基础资源仓库
yyl
2025-05-30 8cb6ac07e11cc70922bd4c484773c6afb7a97fd9
18 子 2D卡牌客户端搭建 / 2D卡牌客户端搭建
7个文件已添加
337 ■■■■■ 已修改文件
Assets/Editor/UI/UIBaseInspector.cs 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/UI/UIBaseInspector.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/Prefabs.meta 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/Prefabs/ClickEmptyCloseMask.prefab 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/Prefabs/ClickEmptyCloseMask.prefab.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/Prefabs/ScreenMask.prefab 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Resources/Prefabs/ScreenMask.prefab.meta 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/UI/UIBaseInspector.cs
New file
@@ -0,0 +1,108 @@
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(UIBase))]
public class UIBaseInspector : Editor
{
    SerializedProperty uiLayer;
    SerializedProperty uiName;
    SerializedProperty isMainUI;
    SerializedProperty supportParentChildRelation;
    SerializedProperty isPersistent;
    SerializedProperty maxIdleRounds;
    SerializedProperty openAnimationType;
    SerializedProperty closeAnimationType;
    SerializedProperty animationDuration;
    SerializedProperty animationEase;
    SerializedProperty openMask;
    SerializedProperty clickEmptySpaceClose;
    void OnEnable()
    {
        // 获取所有SerializedProperty
        uiLayer = serializedObject.FindProperty("uiLayer");
        uiName = serializedObject.FindProperty("uiName");
        isMainUI = serializedObject.FindProperty("isMainUI");
        supportParentChildRelation = serializedObject.FindProperty("supportParentChildRelation");
        isPersistent = serializedObject.FindProperty("isPersistent");
        maxIdleRounds = serializedObject.FindProperty("maxIdleRounds");
        openAnimationType = serializedObject.FindProperty("openAnimationType");
        closeAnimationType = serializedObject.FindProperty("closeAnimationType");
        animationDuration = serializedObject.FindProperty("animationDuration");
        animationEase = serializedObject.FindProperty("animationEase");
        openMask = serializedObject.FindProperty("openMask");
        clickEmptySpaceClose = serializedObject.FindProperty("clickEmptySpaceClose");
    }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();
        EditorGUILayout.PropertyField(uiLayer);
        EditorGUILayout.PropertyField(uiName);
        EditorGUILayout.PropertyField(isMainUI);
        EditorGUILayout.PropertyField(supportParentChildRelation);
        EditorGUILayout.Space();
        EditorGUILayout.LabelField("持久化设置", EditorStyles.boldLabel);
        EditorGUILayout.PropertyField(isPersistent);
        if (isPersistent.boolValue)
        {
            EditorGUI.indentLevel++;
            EditorGUILayout.PropertyField(maxIdleRounds);
            EditorGUI.indentLevel--;
        }
        EditorGUILayout.Space();
        EditorGUILayout.LabelField("动画设置", EditorStyles.boldLabel);
        EditorGUILayout.PropertyField(openAnimationType);
        EditorGUILayout.PropertyField(closeAnimationType);
        if (openAnimationType.enumValueIndex != 0 || closeAnimationType.enumValueIndex != 0)
        {
            EditorGUI.indentLevel++;
            EditorGUILayout.PropertyField(animationDuration);
            EditorGUILayout.PropertyField(animationEase);
            EditorGUI.indentLevel--;
        }
        EditorGUILayout.Space();
        EditorGUILayout.LabelField("遮罩设置", EditorStyles.boldLabel);
        // 使用BeginHorizontal来创建一个水平布局组
        EditorGUILayout.BeginHorizontal();
        // 创建一个开关按钮组
        EditorGUI.BeginChangeCheck();
        bool tempOpenMask = GUILayout.Toggle(openMask.boolValue, "开启遮罩", EditorStyles.miniButtonLeft);
        bool tempClickEmptyClose = GUILayout.Toggle(clickEmptySpaceClose.boolValue, "点击空白关闭", EditorStyles.miniButtonRight);
        // 如果有改变
        if (EditorGUI.EndChangeCheck())
        {
            // 确保只有一个可以为true
            if (tempOpenMask && tempClickEmptyClose)
            {
                // 如果两个都为true,保持最后改变的那个为true
                if (openMask.boolValue != tempOpenMask)
                {
                    clickEmptySpaceClose.boolValue = false;
                    openMask.boolValue = true;
                }
                else
                {
                    openMask.boolValue = false;
                    clickEmptySpaceClose.boolValue = true;
                }
            }
            else
            {
                openMask.boolValue = tempOpenMask;
                clickEmptySpaceClose.boolValue = tempClickEmptyClose;
            }
        }
        EditorGUILayout.EndHorizontal();
        serializedObject.ApplyModifiedProperties();
    }
}
Assets/Editor/UI/UIBaseInspector.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0fbf6ddb4c77d3d4d99505d359d8b869
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/Prefabs.meta
New file
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4d4fd0d1daafb9841b7e18e19ecd9665
folderAsset: yes
DefaultImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/Prefabs/ClickEmptyCloseMask.prefab
New file
@@ -0,0 +1,122 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1007792482766145798
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 3131827869564620803}
  - component: {fileID: 4732318971056992194}
  - component: {fileID: 1853674911349692926}
  - component: {fileID: 1845536471669267178}
  m_Layer: 5
  m_Name: ClickEmptyCloseMask
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &3131827869564620803
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1007792482766145798}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_ConstrainProportionsScale: 0
  m_Children: []
  m_Father: {fileID: 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: 1500, y: 2668}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4732318971056992194
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1007792482766145798}
  m_CullTransparentMesh: 1
--- !u!114 &1853674911349692926
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1007792482766145798}
  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: 0, g: 0, b: 0, a: 0.5019608}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_Sprite: {fileID: 0}
  m_Type: 0
  m_PreserveAspect: 0
  m_FillCenter: 1
  m_FillMethod: 4
  m_FillAmount: 1
  m_FillClockwise: 1
  m_FillOrigin: 0
  m_UseSpriteMesh: 0
  m_PixelsPerUnitMultiplier: 1
--- !u!114 &1845536471669267178
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 1007792482766145798}
  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: 1853674911349692926}
  m_OnClick:
    m_PersistentCalls:
      m_Calls: []
Assets/Resources/Prefabs/ClickEmptyCloseMask.prefab.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8cc63f19afdf9094eae57bd1525b0aa9
PrefabImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Resources/Prefabs/ScreenMask.prefab
New file
@@ -0,0 +1,74 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6573027761555286950
GameObject:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  serializedVersion: 6
  m_Component:
  - component: {fileID: 5060824339156781239}
  - component: {fileID: 5139521211198942054}
  - component: {fileID: 7843618826810733026}
  m_Layer: 5
  m_Name: ScreenMask
  m_TagString: Untagged
  m_Icon: {fileID: 0}
  m_NavMeshLayer: 0
  m_StaticEditorFlags: 0
  m_IsActive: 1
--- !u!224 &5060824339156781239
RectTransform:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6573027761555286950}
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
  m_LocalPosition: {x: 0, y: 0, z: 0}
  m_LocalScale: {x: 1, y: 1, z: 1}
  m_ConstrainProportionsScale: 0
  m_Children: []
  m_Father: {fileID: 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: 1500, y: 2668}
  m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5139521211198942054
CanvasRenderer:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6573027761555286950}
  m_CullTransparentMesh: 1
--- !u!114 &7843618826810733026
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 6573027761555286950}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, type: 3}
  m_Name:
  m_EditorClassIdentifier:
  m_Material: {fileID: 0}
  m_Color: {r: 1, g: 1, b: 1, a: 0}
  m_RaycastTarget: 1
  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
  m_Maskable: 1
  m_OnCullStateChanged:
    m_PersistentCalls:
      m_Calls: []
  m_Texture: {fileID: 0}
  m_UVRect:
    serializedVersion: 2
    x: 0
    y: 0
    width: 1
    height: 1
Assets/Resources/Prefabs/ScreenMask.prefab.meta
New file
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: dde61cfb2ea7daf4a8336bef0b656390
PrefabImporter:
  externalObjects: {}
  userData:
  assetBundleName:
  assetBundleVariant: