guodong 1 rok pred
rodič
commit
c2053ccbaf

+ 8 - 0
GameClient/Assets/AssetBundleCollectorSetting.asset

@@ -59,6 +59,14 @@ MonoBehaviour:
         FilterRuleName: CollectUIBytesFile
         AssetTags: 
         UserData: 
+      - CollectPath: Assets/ResIn/UUI
+        CollectorGUID: ded485335a4aed145a2313c073d1c3a0
+        CollectorType: 0
+        AddressRuleName: AddressByFileName
+        PackRuleName: PackSeparately
+        FilterRuleName: CollectAll
+        AssetTags: 
+        UserData: 
     - GroupName: launcher
       GroupDesc: 
       AssetTags: preload

+ 3 - 4
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -1,4 +1,3 @@
-using FairyGUI;
 using UnityEngine;
 using ET;
 using static GFGGame.LauncherConfig;
@@ -15,6 +14,7 @@ namespace GFGGame
             //字体
             await FontLoader.Instance.Init();
             //界面
+            UGUIManager.Instance.Init();
             ViewManager.Init();
             //日志
             LogController.Instance.Init();
@@ -63,6 +63,7 @@ namespace GFGGame
                 SuitFosterListCfgArray.Instance.Init();
                 TaskCfgArray.Instance.Init();
 
+                LauncherView.Instance.Close();
                 //显示登录
                 LoginController.ShowLogin();
             });
@@ -180,9 +181,7 @@ namespace GFGGame
                     // GameGlobal.isFirstEntry == true 
                     if (!InstanceZonesDataManager.CheckLevelPass(100001001))
                     {
-                        GameGlobal.isFirstEntry = false;
-                        // StoryController.ShowPriorStoryDialog();
-                        StoryController.ShowLevelView(100001001);
+                        UICGView.Instance.Show();
                     }
                     else
                     {

+ 0 - 2
GameClient/Assets/Game/HotUpdate/Controller/LoginController.cs

@@ -9,7 +9,6 @@ namespace GFGGame
         public static string ageTips = "1)本游戏是一款角色扮演类游戏,适用于年满16周岁及以上的用户,建议未成年人在家长监护下使用游戏产品。\n2)本游戏基于架空的故事背景和幻想世界观,剧情简单且积极向上,没有基于真实历史和现实事件的改编内容游戏玩法以收集不同服装进行搭配展开,有较为简单的竞技和对抗玩法,游戏中有基于文字的陌生人社交系统。\n3)本游戏中有用户实名认证系统,认证为未成年人的用户将接受以下管理:游戏中部分玩法和道具需要付费。未满8周岁的用户不能付费; 8周岁以上未满16周岁的未成年人用户,单次充值金额不得超过50元人民币,每月充值金额累计不得超过200元人民币; 16周岁以上的未成年人用户,单次充值金额不得超过100元人民币,每月充值金额累计不得超过400元人民币。\n4)本游戏以服装收集及搭配为主要玩法,有助于玩家开阔眼界、进一步提升审美能力。游戏中很多服装融入了中华传统元素,可以有助于中华传统文化的传播,体验中国的古典美。";
         public static void ShowLogin()
         {
-            LauncherView.Instance.Close();
             ViewManager.Show<LoginView>();
         }
 
@@ -199,7 +198,6 @@ namespace GFGGame
             }
             else
             {
-                GameGlobal.isFirstEntry = true;
                 ViewManager.Hide<ModalStatusView>();
                 //GameController.ShowCreateRole();不显示创角界面,在剧情中改名
                 await ReqCreateRole();

+ 0 - 1
GameClient/Assets/Game/HotUpdate/GameGlobal.cs

@@ -10,7 +10,6 @@ namespace GFGGame
         public static long OpenServerTime;
 
         public static bool isVisitor = false;
-        public static bool isFirstEntry = false;
 
         public static string cfgName;
 

+ 8 - 0
GameClient/Assets/Game/HotUpdate/UGUI.meta

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

+ 31 - 0
GameClient/Assets/Game/HotUpdate/UGUI/UGUIManager.cs

@@ -0,0 +1,31 @@
+using UnityEngine;
+using YooAsset;
+
+namespace GFGGame
+{
+    public class UGUIManager : SingletonBase<UGUIManager>
+    {
+        public GameObject desktop;
+        public void Init()
+        {
+            string path = ResPathUtil.GetUUIPrefabPath("UICanvas");
+            var handle = YooAssets.LoadAssetSync<GameObject>(path);
+            var canvas = handle.InstantiateSync();
+            desktop = canvas.transform.Find("Desktop").gameObject;
+            GameObject.DontDestroyOnLoad(canvas);
+
+            //// 初始化窗口系统
+            //UniWindow.Initalize(desktop);
+        }
+
+        public void Show()
+        {
+
+        }
+
+        public void Hide()
+        {
+
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/UGUI/UGUIManager.cs.meta

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

+ 72 - 0
GameClient/Assets/Game/HotUpdate/UGUI/UICGView.cs

@@ -0,0 +1,72 @@
+using System;
+using UnityEngine;
+using UnityEngine.UI;
+using UnityEngine.Video;
+using YooAsset;
+
+namespace GFGGame
+{
+    public class UICGView : SingletonBase<UICGView>
+    {
+        private const float VideoWidth = 1920f;
+        private const float VideoHeight = 1080f;
+        private GameObject _ui;
+        private AssetOperationHandle handle;
+        private RawImage imgVideo;
+        private Button btnFullScreen;
+        private VideoPlayer videoPlayer;
+
+        public void Show()
+        {
+            string path = ResPathUtil.GetUUIPrefabPath("UICG");
+            handle = YooAssets.LoadAssetSync<GameObject>(path);
+            _ui = handle.InstantiateSync(UGUIManager.Instance.desktop.transform);
+            imgVideo = _ui.transform.Find("ImgVideo").GetComponent<RawImage>();
+            Vector2 imgVideoSizeDelta = imgVideo.rectTransform.sizeDelta;
+            imgVideoSizeDelta.x = Screen.width;
+            imgVideoSizeDelta.y = (VideoHeight / VideoWidth) * imgVideoSizeDelta.x;
+            imgVideo.rectTransform.sizeDelta = imgVideoSizeDelta;
+            
+
+            btnFullScreen = _ui.transform.Find("BtnFullScreen").GetComponent<Button>();
+            RectTransform rectTransform = btnFullScreen.GetComponent<RectTransform>();
+            Vector2 buttonSizeDelta = rectTransform.sizeDelta;
+            Vector2 anchoredPosition = rectTransform.anchoredPosition;
+            anchoredPosition.y = -imgVideoSizeDelta.y / 2 - buttonSizeDelta.y;
+            rectTransform.anchoredPosition = anchoredPosition;
+            btnFullScreen.onClick.AddListener(OnClickBtnFullScreen);
+
+            videoPlayer = _ui.transform.Find("VideoPlayer").GetComponent<VideoPlayer>();
+            videoPlayer.loopPointReached += OnVideoEnded;
+        }
+
+        private void OnVideoEnded(VideoPlayer source)
+        {
+            this.Hide();
+            StoryController.ShowLevelView(100001001);
+        }
+
+        private void OnClickBtnFullScreen()
+        {
+            btnFullScreen.gameObject.SetActive(false);
+            imgVideo.rectTransform.localRotation = Quaternion.Euler(0, 0, -90);
+            Vector2 imgVideoSizeDelta = imgVideo.rectTransform.sizeDelta;
+            imgVideoSizeDelta.y = Screen.width;
+            imgVideoSizeDelta.x = (VideoWidth / VideoHeight) * imgVideoSizeDelta.y;
+            imgVideo.rectTransform.sizeDelta = imgVideoSizeDelta;
+            if(videoPlayer.time <= 3)
+            {
+                videoPlayer.Stop();
+                videoPlayer.Play();
+            }
+        }
+
+        public void Hide()
+        {
+            handle.Release();
+            handle = null;
+            GameObject.Destroy(_ui);
+            _ui = null;
+        }
+    }
+}

+ 11 - 0
GameClient/Assets/Game/HotUpdate/UGUI/UICGView.cs.meta

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

+ 6 - 0
GameClient/Assets/Game/HotUpdate/Utils/ResPathUtil.cs

@@ -7,6 +7,7 @@ namespace GFGGame
 
         public const string FONT_DIR_PATH = "Assets/ResIn/Font";
         public static readonly string UI_DIR_PATH = "Assets/ResIn/UI";
+        public static readonly string UUI_DIR_PATH = "Assets/ResIn/UUI";
         public static readonly string PREFAB_DIR_PATH = "Assets/ResIn/Prefab";
         public static readonly string LoginRes_DIR_PATH = "Assets/ResIn/LoginRes";
         public static readonly string TEXTURE_FIGHT_DIR_PATH = "Assets/ResIn/Fight";
@@ -34,6 +35,11 @@ namespace GFGGame
         {
             return $"{UI_DIR_PATH}/{res}/{res}";
         }
+        public static string GetUUIPrefabPath(string res)
+        {
+            return $"{UUI_DIR_PATH}/{res}.prefab";
+        }
+
         public static string GetScorePath(int score)
         {
             return GetCommonGameResPath("kp_sx_" + score);

+ 8 - 0
GameClient/Assets/ResIn/UUI.meta

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

+ 442 - 0
GameClient/Assets/ResIn/UUI/UICG.prefab

@@ -0,0 +1,442 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &3226370377293259953
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8091540498621025810}
+  - component: {fileID: 5558493903024588817}
+  - component: {fileID: 3027397433677819976}
+  - component: {fileID: 7362622180705135904}
+  m_Layer: 5
+  m_Name: UICG
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &8091540498621025810
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3226370377293259953}
+  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: 4379502567944253540}
+  - {fileID: 5584107414932486831}
+  - {fileID: 517854379909487916}
+  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!223 &5558493903024588817
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3226370377293259953}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 2
+  m_Camera: {fileID: 0}
+  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 &3027397433677819976
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3226370377293259953}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 0
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 800, y: 600}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 1
+--- !u!114 &7362622180705135904
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3226370377293259953}
+  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: 4294967295
+--- !u!1 &5639216484651693872
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5584107414932486831}
+  - component: {fileID: 8977958175320177840}
+  m_Layer: 0
+  m_Name: VideoPlayer
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5584107414932486831
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5639216484651693872}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -540, y: -1080, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 8091540498621025810}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!328 &8977958175320177840
+VideoPlayer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5639216484651693872}
+  m_Enabled: 1
+  m_VideoClip: {fileID: 32900000, guid: e3110adc489acaa42b3494cffd1d01b2, type: 3}
+  m_TargetCameraAlpha: 1
+  m_TargetCamera3DLayout: 0
+  m_TargetCamera: {fileID: 0}
+  m_TargetTexture: {fileID: 8400000, guid: 1be6a06cb8aae0043be65021f62f91a0, type: 2}
+  m_TimeReference: 0
+  m_TargetMaterialRenderer: {fileID: 0}
+  m_TargetMaterialProperty: _MainTex
+  m_RenderMode: 2
+  m_AspectRatio: 2
+  m_DataSource: 0
+  m_PlaybackSpeed: 1
+  m_AudioOutputMode: 2
+  m_TargetAudioSources:
+  - {fileID: 0}
+  m_DirectAudioVolumes:
+  - 1
+  m_Url: 
+  m_EnabledAudioTracks: 01
+  m_DirectAudioMutes: 00
+  m_ControlledAudioTrackCount: 1
+  m_PlayOnAwake: 1
+  m_SkipOnDrop: 1
+  m_Looping: 0
+  m_WaitForFirstFrame: 1
+  m_FrameReadyEventEnabled: 0
+  m_VideoShaders: []
+--- !u!1 &6942173251886007676
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 517854379909487916}
+  - component: {fileID: 5442437178465132142}
+  - component: {fileID: 3986599562840891157}
+  - component: {fileID: 4968124713614974340}
+  m_Layer: 5
+  m_Name: BtnFullScreen
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &517854379909487916
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6942173251886007676}
+  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: 4660453879348938672}
+  m_Father: {fileID: 8091540498621025810}
+  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: -339}
+  m_SizeDelta: {x: 180, y: 55}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5442437178465132142
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6942173251886007676}
+  m_CullTransparentMesh: 1
+--- !u!114 &3986599562840891157
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6942173251886007676}
+  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.8301887, g: 0.8262727, b: 0.8262727, 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 &4968124713614974340
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6942173251886007676}
+  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: 3986599562840891157}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!1 &7224076520329257924
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4379502567944253540}
+  - component: {fileID: 720217753082088938}
+  - component: {fileID: 2567303956041077809}
+  m_Layer: 5
+  m_Name: ImgVideo
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4379502567944253540
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7224076520329257924}
+  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: 8091540498621025810}
+  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: 1080, y: 607.5}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &720217753082088938
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7224076520329257924}
+  m_CullTransparentMesh: 1
+--- !u!114 &2567303956041077809
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7224076520329257924}
+  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: 1}
+  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: 8400000, guid: 1be6a06cb8aae0043be65021f62f91a0, type: 2}
+  m_UVRect:
+    serializedVersion: 2
+    x: 0
+    y: 0
+    width: 1
+    height: 1
+--- !u!1 &8960160764703910231
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4660453879348938672}
+  - component: {fileID: 5321308941036672308}
+  - component: {fileID: 8651081568688052911}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4660453879348938672
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8960160764703910231}
+  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: 517854379909487916}
+  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 &5321308941036672308
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8960160764703910231}
+  m_CullTransparentMesh: 1
+--- !u!114 &8651081568688052911
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8960160764703910231}
+  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.2735849, g: 0.2735849, b: 0.2735849, 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: 30
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 2
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u5168\u5C4F\u64AD\u653E"

+ 7 - 0
GameClient/Assets/ResIn/UUI/UICG.prefab.meta

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

+ 204 - 0
GameClient/Assets/ResIn/UUI/UICanvas.prefab

@@ -0,0 +1,204 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1457738500883128975
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1457738500883128971}
+  - component: {fileID: 1457738500883128972}
+  - component: {fileID: 1457738500883128973}
+  - component: {fileID: 1457738500883128974}
+  m_Layer: 5
+  m_Name: UICanvas
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1457738500883128971
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1457738500883128975}
+  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: 4471021202605196124}
+  - {fileID: 3071470527211293446}
+  m_Father: {fileID: 0}
+  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 &1457738500883128972
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1457738500883128975}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 0
+  m_Camera: {fileID: 0}
+  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 &1457738500883128973
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1457738500883128975}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 0
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 800, y: 600}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 0
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 0
+--- !u!114 &1457738500883128974
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1457738500883128975}
+  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: 4294967295
+--- !u!1 &3071470527211293447
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3071470527211293446}
+  m_Layer: 5
+  m_Name: Desktop
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &3071470527211293446
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3071470527211293447}
+  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: 1457738500883128971}
+  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}
+--- !u!1 &4471021202605196131
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4471021202605196124}
+  - component: {fileID: 4471021202605196125}
+  - component: {fileID: 4471021202605196130}
+  m_Layer: 0
+  m_Name: EventSystem
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4471021202605196124
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4471021202605196131}
+  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: 1457738500883128971}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &4471021202605196125
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4471021202605196131}
+  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 &4471021202605196130
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4471021202605196131}
+  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

+ 7 - 0
GameClient/Assets/ResIn/UUI/UICanvas.prefab.meta

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

+ 9 - 9
GameClient/UserSettings/EditorUserSettings.asset

@@ -6,31 +6,31 @@ EditorUserSettings:
   serializedVersion: 4
   m_ConfigSettings:
     RecentlyUsedScenePath-0:
-      value: 22424703114646680c031c2e153010393a250d2438212b3562785365acb77b1ce7ea39a6d8093c393707fc7321260032e2060c18b95b58343800eb0112fe041a1ecb56d014c10b05
+      value: 22424703114646680c031c2e1530103c1918130b38670a3f22223c27acf53a31f6fe
       flags: 0
     RecentlyUsedScenePath-1:
-      value: 22424703114646680c031c2e1530103c1918130b38670a3f22223c27acf53a31f6fe
+      value: 22424703114646680c031c2e1530103d17041323222f691d2c3a163aece77a2decee22f0
       flags: 0
     RecentlyUsedScenePath-2:
-      value: 22424703114646680c031c2e1530103d17041323222f691d2c3a163aece77a2decee22f0
+      value: 22424703114646680c031c2e15301031050e16290e2d283325241c21e9af152bfbe935cbe2343c343403fd374a2b0f36e613
       flags: 0
     RecentlyUsedScenePath-3:
-      value: 22424703114646680c031c2e15301031050e16290e2d283325241c21e9af152bfbe935cbe2343c343403fd374a2b0f36e613
+      value: 22424703114646680c031c2e15301031050e16290e2d283325241c21e9af152df6e83be8f3333c1d2a1be13f263b0f3cfa070819fd451f05181ae4
       flags: 0
     RecentlyUsedScenePath-4:
-      value: 22424703114646680c031c2e15301031050e16290e2d283325241c21e9af152df6e83be8f3333c1d2a1be13f263b0f3cfa070819fd451f05181ae4
+      value: 22424703114646680c031c2e15301031181e152b3821293e6208133aefe12031ede978fce9332b25
       flags: 0
     RecentlyUsedScenePath-5:
-      value: 22424703114646680c031c2e15301031181e152b3821293e6208133aefe12031ede978fce9332b25
+      value: 2242470311464669081d252c5f105c1518125706232f2f3e633c133af6f9
       flags: 0
     RecentlyUsedScenePath-6:
-      value: 2242470311464669081d252c5f105c1518125706232f2f3e633c133af6f9
+      value: 22424703114646680e0b0227036c78111b12342b39262538283b5326ece92021
       flags: 0
     RecentlyUsedScenePath-7:
-      value: 22424703114646680e0b0227036c78111b12342b39262538283b5326ece92021
+      value: 2242470311464669081d033702205a0359241b2f222d357f1b2c0f20ebef3a1beae235e2e2287129370bfb25
       flags: 0
     RecentlyUsedScenePath-8:
-      value: 2242470311464669081d033702205a0359241b2f222d357f1b2c0f20ebef3a1beae235e2e2287129370bfb25
+      value: 2242470311464669081d252c5f105c1518125702233c132029280936acf53a31f6fe
       flags: 0
     RecentlyUsedScenePath-9:
       value: 2242470311464669081d033702205a0359241b2f222d357f0a281036cee12136e1ef33fba92f31352d1b