Skip to content

Commit 5c662e4

Browse files
committed
支持多UICamera
1 parent 5dde6fe commit 5c662e4

17 files changed

+507
-144
lines changed

Assets/Script/Core/Application/IApplicationStatus.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
public abstract class IApplicationStatus
77
{
8+
#region UI 管理
9+
810
List<UIWindowBase> m_uiList = new List<UIWindowBase>();
911

1012
public T OpenUI<T>() where T: UIWindowBase
@@ -66,6 +68,11 @@ public void CloseAllUI(bool isPlayAnim = true)
6668
}
6769
m_uiList.Clear();
6870
}
71+
72+
#endregion
73+
74+
#region 生命周期
75+
6976
/// <summary>
7077
/// 当状态第一次创建时调用(生命周期里只调用一次)
7178
/// </summary>
@@ -109,7 +116,6 @@ public virtual void OnGUI()
109116
{
110117

111118
}
112-
113119
public virtual IEnumerator InChangeScene(ChangSceneFinish handle)
114120
{
115121
if (handle != null)
@@ -118,14 +124,16 @@ public virtual IEnumerator InChangeScene(ChangSceneFinish handle)
118124
{
119125
handle();
120126
}
121-
catch(Exception e)
127+
catch (Exception e)
122128
{
123129
Debug.LogError(e.ToString());
124130
}
125131
}
126132

127-
yield break;
133+
yield break;
128134
}
129135

136+
#endregion
137+
130138
public delegate void ChangSceneFinish();
131139
}

Assets/Script/Core/Develop/DevelopReplayManager.cs

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,9 @@ static void ChoseReplayMode(bool isReplay,string replayFileName = null)
8989

9090
//关闭正常输入,保证回放数据准确
9191
IInputProxyBase.IsActive = false;
92-
InputUIEventProxy.IsActive = false;
93-
InputOperationEventProxy.IsActive = false;
94-
InputNetworkEventProxy.IsActive = false;
92+
//InputUIEventProxy.IsActive = false;
93+
//InputOperationEventProxy.IsActive = false;
94+
//InputNetworkEventProxy.IsActive = false;
9595
}
9696
else
9797
{
@@ -333,15 +333,24 @@ static void MenuWindow(int windowID)
333333

334334
#region ReplayListGUI
335335

336+
static bool isUploadReplay;
337+
336338
static void ReplayListGUI()
337339
{
338340
scrollPos = GUILayout.BeginScrollView(scrollPos);
339341

340342
for (int i = 0; i < FileNameList.Length; i++)
341343
{
342-
if (GUILayout.Button(FileNameList[i]))
344+
if (GUILayout.Button("上传 " + FileNameList[i]))
343345
{
344-
ChoseReplayMode(true, FileNameList[i]);
346+
if(!isUploadReplay)
347+
{
348+
ChoseReplayMode(true, FileNameList[i]);
349+
}
350+
else
351+
{
352+
353+
}
345354
}
346355
}
347356

@@ -357,6 +366,11 @@ static void ReplayListGUI()
357366
});
358367
}
359368

369+
if (GUILayout.Button("上传模式 : " + isUploadReplay))
370+
{
371+
isUploadReplay = !isUploadReplay;
372+
}
373+
360374
if (GUILayout.Button("返回上层"))
361375
{
362376
MenuStatus = DevMenuEnum.MainMenu;

Assets/Script/Core/Editor/Language/LanguageDataEditorWindow.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ void OnGUI()
7777
//GUI.skin.label.fontSize = 11;
7878
if (!Application.isPlaying)
7979
{
80-
8180
SelectLanguageGUI();
8281
DefaultLanguageGUI();
8382
SelectEditorModuleGUI();
@@ -198,10 +197,9 @@ void SaveConfig()
198197
List<string> languageList = new List<string>();
199198
foreach (var item in s_languageList)
200199
{
201-
202-
languageList.Add(item);
203-
200+
languageList.Add(item);
204201
}
202+
205203
config.Add(LanguageManager.c_languageListKey, new SingleField(languageList));
206204

207205
//保存模块列表

Assets/Script/Core/Editor/UI/UICreateService.cs

Lines changed: 62 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,42 +19,63 @@ public static void CreatUIManager(Vector2 referenceResolution, CanvasScaler.Scre
1919
//UIManager
2020
GameObject UIManagerGo = new GameObject("UIManager");
2121
UIManagerGo.layer = LayerMask.NameToLayer("UI");
22-
//UIManager UIManager = UIManagerGo.AddComponent<UIManager>();
23-
UIManagerGo.AddComponent<UIManager>();
22+
UIManager UIManager = UIManagerGo.AddComponent<UIManager>();
23+
24+
CreateUICamera(UIManager, "DefaultUI",1, referenceResolution, MatchMode, isOnlyUICamera, isVertical);
25+
26+
ProjectWindowUtil.ShowCreatedAsset(UIManagerGo);
27+
28+
//保存UIManager
29+
ReSaveUIManager(UIManagerGo);
30+
}
31+
32+
public static void CreateUICamera(UIManager UIManager,string key, float cameraDepth, Vector2 referenceResolution, CanvasScaler.ScreenMatchMode MatchMode, bool isOnlyUICamera, bool isVertical)
33+
{
34+
UILayerManager.UICameraData uICameraData = new UILayerManager.UICameraData();
35+
36+
uICameraData.m_key = key;
37+
38+
GameObject UIManagerGo = UIManager.gameObject;
39+
GameObject canvas = new GameObject(key);
40+
RectTransform canvasRt = canvas.AddComponent<RectTransform>();
41+
42+
canvasRt.SetParent(UIManagerGo.transform);
43+
uICameraData.m_root = canvas;
2444

2545
//UIcamera
2646
GameObject cameraGo = new GameObject("UICamera");
27-
cameraGo.transform.SetParent(UIManagerGo.transform);
47+
cameraGo.transform.SetParent(canvas.transform);
2848
cameraGo.transform.localPosition = new Vector3(0, 0, -1000);
2949
Camera camera = cameraGo.AddComponent<Camera>();
3050
camera.cullingMask = LayerMask.GetMask("UI");
3151
camera.orthographic = true;
32-
if (!isOnlyUICamera)
33-
{
34-
camera.clearFlags = CameraClearFlags.Depth;
35-
camera.depth = 1;
36-
}
37-
else
38-
{
39-
camera.clearFlags = CameraClearFlags.SolidColor;
40-
camera.backgroundColor = Color.black;
41-
}
52+
camera.depth = cameraDepth;
53+
uICameraData.m_camera = camera;
4254

4355
//Canvas
44-
Canvas canvas = UIManagerGo.AddComponent<Canvas>();
45-
canvas.renderMode = RenderMode.ScreenSpaceCamera;
46-
canvas.worldCamera = camera;
56+
Canvas canvasComp = canvas.AddComponent<Canvas>();
57+
canvasComp.renderMode = RenderMode.ScreenSpaceCamera;
58+
canvasComp.worldCamera = camera;
4759

4860
//UI Raycaster
49-
//GraphicRaycaster Graphic = UIManagerGo.AddComponent<GraphicRaycaster>();
50-
UIManagerGo.AddComponent<GraphicRaycaster>();
61+
canvas.AddComponent<GraphicRaycaster>();
5162

5263
//CanvasScaler
53-
CanvasScaler scaler = UIManagerGo.AddComponent<CanvasScaler>();
64+
CanvasScaler scaler = canvas.AddComponent<CanvasScaler>();
5465
scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
5566
scaler.referenceResolution = referenceResolution;
5667
scaler.screenMatchMode = MatchMode;
5768

69+
if (!isOnlyUICamera)
70+
{
71+
camera.clearFlags = CameraClearFlags.Depth;
72+
camera.depth = 1;
73+
}
74+
else
75+
{
76+
camera.clearFlags = CameraClearFlags.SolidColor;
77+
camera.backgroundColor = Color.black;
78+
}
5879
if (isVertical)
5980
{
6081
scaler.matchWidthOrHeight = 1;
@@ -67,73 +88,77 @@ public static void CreatUIManager(Vector2 referenceResolution, CanvasScaler.Scre
6788
//挂载点
6889
GameObject goTmp = null;
6990
RectTransform rtTmp = null;
70-
UILayerManager layerTmp = UIManagerGo.GetComponent<UILayerManager>();
91+
UILayerManager UILayerManager = UIManagerGo.GetComponent<UILayerManager>();
7192

7293
goTmp = new GameObject("GameUI");
7394
goTmp.layer = LayerMask.NameToLayer("UI");
74-
goTmp.transform.SetParent(UIManagerGo.transform);
95+
goTmp.transform.SetParent(canvas.transform);
7596
goTmp.transform.localScale = Vector3.one;
7697
rtTmp = goTmp.AddComponent<RectTransform>();
7798
rtTmp.anchorMax = new Vector2(1, 1);
7899
rtTmp.anchorMin = new Vector2(0, 0);
79100
rtTmp.anchoredPosition3D = Vector3.zero;
80101
rtTmp.sizeDelta = Vector2.zero;
81-
layerTmp.m_GameUILayerParent = goTmp.transform;
102+
uICameraData.m_GameUILayerParent = goTmp.transform;
82103

83104
goTmp = new GameObject("Fixed");
84105
goTmp.layer = LayerMask.NameToLayer("UI");
85-
goTmp.transform.SetParent(UIManagerGo.transform);
106+
goTmp.transform.SetParent(canvas.transform);
86107
goTmp.transform.localScale = Vector3.one;
87108
rtTmp = goTmp.AddComponent<RectTransform>();
88109
rtTmp.anchorMax = new Vector2(1, 1);
89110
rtTmp.anchorMin = new Vector2(0, 0);
90111
rtTmp.anchoredPosition3D = Vector3.zero;
91112
rtTmp.sizeDelta = Vector2.zero;
92-
layerTmp.m_FixedLayerParent = goTmp.transform;
113+
uICameraData.m_FixedLayerParent = goTmp.transform;
93114

94115
goTmp = new GameObject("Normal");
95116
goTmp.layer = LayerMask.NameToLayer("UI");
96-
goTmp.transform.SetParent(UIManagerGo.transform);
117+
goTmp.transform.SetParent(canvas.transform);
97118
goTmp.transform.localScale = Vector3.one;
98119
rtTmp = goTmp.AddComponent<RectTransform>();
99120
rtTmp.anchorMax = new Vector2(1, 1);
100121
rtTmp.anchorMin = new Vector2(0, 0);
101122
rtTmp.anchoredPosition3D = Vector3.zero;
102123
rtTmp.sizeDelta = Vector2.zero;
103-
layerTmp.m_NormalLayerParent = goTmp.transform;
124+
uICameraData.m_NormalLayerParent = goTmp.transform;
104125

105126
goTmp = new GameObject("TopBar");
106127
goTmp.layer = LayerMask.NameToLayer("UI");
107-
goTmp.transform.SetParent(UIManagerGo.transform);
128+
goTmp.transform.SetParent(canvas.transform);
108129
goTmp.transform.localScale = Vector3.one;
109130
rtTmp = goTmp.AddComponent<RectTransform>();
110131
rtTmp.anchorMax = new Vector2(1, 1);
111132
rtTmp.anchorMin = new Vector2(0, 0);
112133
rtTmp.anchoredPosition3D = Vector3.zero;
113134
rtTmp.sizeDelta = Vector2.zero;
114-
layerTmp.m_TopbarLayerParent = goTmp.transform;
135+
uICameraData.m_TopbarLayerParent = goTmp.transform;
115136

116137
goTmp = new GameObject("PopUp");
117138
goTmp.layer = LayerMask.NameToLayer("UI");
118-
goTmp.transform.SetParent(UIManagerGo.transform);
139+
goTmp.transform.SetParent(canvas.transform);
119140
goTmp.transform.localScale = Vector3.one;
120141
rtTmp = goTmp.AddComponent<RectTransform>();
121142
rtTmp.anchorMax = new Vector2(1, 1);
122143
rtTmp.anchorMin = new Vector2(0, 0);
123144
rtTmp.anchoredPosition3D = Vector3.zero;
124145
rtTmp.sizeDelta = Vector2.zero;
125-
layerTmp.m_PopUpLayerParent = goTmp.transform;
126-
//m_UILayerManager = layerTmp;
146+
uICameraData.m_PopUpLayerParent = goTmp.transform;
127147

128-
ProjectWindowUtil.ShowCreatedAsset(UIManagerGo);
148+
UILayerManager.UICameraList.Add(uICameraData);
129149

150+
//重新保存
151+
ReSaveUIManager(UIManagerGo);
152+
}
153+
154+
static void ReSaveUIManager(GameObject UIManagerGo)
155+
{
130156
string Path = "Resources/UI/UIManager.prefab";
131157
FileTool.CreatFilePath(Application.dataPath + "/" + Path);
132158
PrefabUtility.CreatePrefab("Assets/" + Path, UIManagerGo, ReplacePrefabOptions.ConnectToPrefab);
133-
134159
}
135160

136-
public static void CreatUI(string UIWindowName, UIType UIType,UILayerManager UILayerManager,bool isAutoCreatePrefab)
161+
public static void CreatUI(string UIWindowName, string UIcameraKey,UIType UIType,UILayerManager UILayerManager,bool isAutoCreatePrefab)
137162
{
138163
GameObject uiGo = new GameObject(UIWindowName);
139164

@@ -340,9 +365,9 @@ public static void CreateGuideWindow()
340365

341366
guideBaseTmp.m_objectList.Add(Text_tips);
342367

343-
guideBaseTmp.m_mask = img;
344-
guideBaseTmp.m_TipText = text;
345-
guideBaseTmp.m_TipTransfrom = txt_tipsrt;
368+
//guideBaseTmp.m_mask = img;
369+
//guideBaseTmp.m_TipText = text;
370+
//guideBaseTmp.m_TipTransfrom = txt_tipsrt;
346371

347372
guideBaseTmp.m_bgMask = BgGo;
348373
guideBaseTmp.m_uiRoot = rootGo;

0 commit comments

Comments
 (0)