forked from sin365/AxibugEmuOnline
UI迭代
This commit is contained in:
parent
fc94396dfa
commit
96d0df5348
File diff suppressed because it is too large
Load Diff
@ -298,6 +298,81 @@ MonoBehaviour:
|
|||||||
m_FillOrigin: 0
|
m_FillOrigin: 0
|
||||||
m_UseSpriteMesh: 0
|
m_UseSpriteMesh: 0
|
||||||
m_PixelsPerUnitMultiplier: 1
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &1813396448589485488
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4467178468921796307}
|
||||||
|
- component: {fileID: 8568189430970172828}
|
||||||
|
- component: {fileID: 6941538197753025297}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: SelectArrow
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &4467178468921796307
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1813396448589485488}
|
||||||
|
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: 331028397738758164}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
|
m_AnchorMax: {x: 0, y: 0.5}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 63, y: 70}
|
||||||
|
m_Pivot: {x: 0, y: 0.5}
|
||||||
|
--- !u!222 &8568189430970172828
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1813396448589485488}
|
||||||
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!114 &6941538197753025297
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1813396448589485488}
|
||||||
|
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: -1023481969782777897, guid: d518d00d4940e854bbe45d9ef891401a, type: 3}
|
||||||
|
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!1 &3189920797946144379
|
--- !u!1 &3189920797946144379
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -354,10 +429,9 @@ MonoBehaviour:
|
|||||||
Root: {fileID: 8754483333502849411}
|
Root: {fileID: 8754483333502849411}
|
||||||
ShadowIcon: {fileID: 2619187604372594158}
|
ShadowIcon: {fileID: 2619187604372594158}
|
||||||
InfoNode: {fileID: 5331629140490413834}
|
InfoNode: {fileID: 5331629140490413834}
|
||||||
SubMenuItemGroup: {fileID: 0}
|
SubMenuItemGroup: {fileID: 4672405243908051711}
|
||||||
SelectScale: 1
|
SelectScale: 1
|
||||||
UnSelectScale: 1
|
UnSelectScale: 1
|
||||||
RomGroup: {fileID: 6055880809428073973}
|
|
||||||
RomGroupRoot: {fileID: 3086674949377227884}
|
RomGroupRoot: {fileID: 3086674949377227884}
|
||||||
--- !u!114 &5700455559359757662
|
--- !u!114 &5700455559359757662
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -486,6 +560,7 @@ RectTransform:
|
|||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 2303118795734916657}
|
- {fileID: 2303118795734916657}
|
||||||
|
- {fileID: 4467178468921796307}
|
||||||
m_Father: {fileID: 8754483333502849411}
|
m_Father: {fileID: 8754483333502849411}
|
||||||
m_RootOrder: 2
|
m_RootOrder: 2
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@ -509,7 +584,7 @@ MonoBehaviour:
|
|||||||
m_Content: {fileID: 8865437771338118001}
|
m_Content: {fileID: 8865437771338118001}
|
||||||
m_Horizontal: 0
|
m_Horizontal: 0
|
||||||
m_Vertical: 1
|
m_Vertical: 1
|
||||||
m_MovementType: 1
|
m_MovementType: 0
|
||||||
m_Elasticity: 0.1
|
m_Elasticity: 0.1
|
||||||
m_Inertia: 1
|
m_Inertia: 1
|
||||||
m_DecelerationRate: 0.135
|
m_DecelerationRate: 0.135
|
||||||
@ -536,7 +611,19 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 1d1e3e91ac34bc8468f357ee247ffb6a, type: 3}
|
m_Script: {fileID: 11500000, guid: 1d1e3e91ac34bc8468f357ee247ffb6a, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
|
m_menuItemRoot: {fileID: 0}
|
||||||
|
PulseInvoke_Delay: 0.4
|
||||||
|
PulseInvoke_Interval: 0.05
|
||||||
|
SubMenuItemTemplate: {fileID: 0}
|
||||||
|
alphaGroup: {fileID: 0}
|
||||||
|
m_selectItemPosition: {x: 50, y: -51}
|
||||||
|
step: 50
|
||||||
|
splitStep: 200
|
||||||
|
m_selectArrow: {fileID: 4467178468921796307}
|
||||||
|
ArrowOffset: 115
|
||||||
WidthFix: 225
|
WidthFix: 225
|
||||||
|
itemGroup: {fileID: 6055880809428073973}
|
||||||
|
srollRect: {fileID: 3428297980621487917}
|
||||||
--- !u!225 &3086674949377227884
|
--- !u!225 &3086674949377227884
|
||||||
CanvasGroup:
|
CanvasGroup:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -778,7 +865,7 @@ MonoBehaviour:
|
|||||||
m_StartCorner: 0
|
m_StartCorner: 0
|
||||||
m_StartAxis: 0
|
m_StartAxis: 0
|
||||||
m_CellSize: {x: 500, y: 200}
|
m_CellSize: {x: 500, y: 200}
|
||||||
m_Spacing: {x: 0, y: 10}
|
m_Spacing: {x: 0, y: 20}
|
||||||
m_Constraint: 1
|
m_Constraint: 1
|
||||||
m_ConstraintCount: 1
|
m_ConstraintCount: 1
|
||||||
ItemTemplate: {fileID: 1998281097548910301, guid: e6df0d7c236795247971f0d1e691b068, type: 3}
|
ItemTemplate: {fileID: 1998281097548910301, guid: e6df0d7c236795247971f0d1e691b068, type: 3}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -108,16 +108,16 @@ RectTransform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 734025543935719296}
|
m_GameObject: {fileID: 734025543935719296}
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 2}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children: []
|
m_Children: []
|
||||||
m_Father: {fileID: 6087025893861054323}
|
m_Father: {fileID: 8754483333502849411}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: -150, y: 0}
|
||||||
m_SizeDelta: {x: 0, y: 0}
|
m_SizeDelta: {x: -296, y: 4}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &5792146190930927166
|
--- !u!222 &5792146190930927166
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -134,7 +134,7 @@ MonoBehaviour:
|
|||||||
m_PrefabInstance: {fileID: 0}
|
m_PrefabInstance: {fileID: 0}
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 734025543935719296}
|
m_GameObject: {fileID: 734025543935719296}
|
||||||
m_Enabled: 0
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
@ -148,9 +148,9 @@ MonoBehaviour:
|
|||||||
m_PersistentCalls:
|
m_PersistentCalls:
|
||||||
m_Calls: []
|
m_Calls: []
|
||||||
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
|
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
m_Type: 0
|
m_Type: 1
|
||||||
m_PreserveAspect: 0
|
m_PreserveAspect: 0
|
||||||
m_FillCenter: 1
|
m_FillCenter: 0
|
||||||
m_FillMethod: 4
|
m_FillMethod: 4
|
||||||
m_FillAmount: 1
|
m_FillAmount: 1
|
||||||
m_FillClockwise: 1
|
m_FillClockwise: 1
|
||||||
@ -250,8 +250,7 @@ RectTransform:
|
|||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children:
|
m_Children: []
|
||||||
- {fileID: 1323634865265500141}
|
|
||||||
m_Father: {fileID: 8105925540140519754}
|
m_Father: {fileID: 8105925540140519754}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 0
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
@ -335,7 +334,7 @@ RectTransform:
|
|||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 500, y: 200}
|
m_SizeDelta: {x: 500, y: 200}
|
||||||
m_Pivot: {x: 0, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &8404333486862214380
|
--- !u!114 &8404333486862214380
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -356,7 +355,7 @@ MonoBehaviour:
|
|||||||
InfoNode: {fileID: 0}
|
InfoNode: {fileID: 0}
|
||||||
SubMenuItemGroup: {fileID: 0}
|
SubMenuItemGroup: {fileID: 0}
|
||||||
SelectScale: 1
|
SelectScale: 1
|
||||||
UnSelectScale: 1
|
UnSelectScale: 0.8
|
||||||
m_romImage: {fileID: 67125096702760250}
|
m_romImage: {fileID: 67125096702760250}
|
||||||
--- !u!114 &5700455559359757662
|
--- !u!114 &5700455559359757662
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -412,7 +411,7 @@ RectTransform:
|
|||||||
- {fileID: 6095356919362338847}
|
- {fileID: 6095356919362338847}
|
||||||
- {fileID: 8126322204359135913}
|
- {fileID: 8126322204359135913}
|
||||||
m_Father: {fileID: 8754483333502849411}
|
m_Father: {fileID: 8754483333502849411}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 2
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
m_AnchorMax: {x: 1, y: 1}
|
||||||
@ -526,7 +525,7 @@ RectTransform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 6087025893861054323}
|
- {fileID: 6087025893861054323}
|
||||||
m_Father: {fileID: 8754483333502849411}
|
m_Father: {fileID: 8754483333502849411}
|
||||||
m_RootOrder: 0
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 0.5}
|
m_AnchorMin: {x: 0, y: 0.5}
|
||||||
m_AnchorMax: {x: 0, y: 0.5}
|
m_AnchorMax: {x: 0, y: 0.5}
|
||||||
@ -677,6 +676,7 @@ RectTransform:
|
|||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_Children:
|
m_Children:
|
||||||
|
- {fileID: 1323634865265500141}
|
||||||
- {fileID: 8105925540140519754}
|
- {fileID: 8105925540140519754}
|
||||||
- {fileID: 8789823129857705082}
|
- {fileID: 8789823129857705082}
|
||||||
m_Father: {fileID: 1998281097548910301}
|
m_Father: {fileID: 1998281097548910301}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -9,6 +9,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
public class AppSceneLoader
|
public class AppSceneLoader
|
||||||
{
|
{
|
||||||
|
|
||||||
public LoadTask CurrentTask { get; private set; }
|
public LoadTask CurrentTask { get; private set; }
|
||||||
|
|
||||||
Queue<LoadTask> m_tasks = new Queue<LoadTask>();
|
Queue<LoadTask> m_tasks = new Queue<LoadTask>();
|
||||||
@ -54,7 +55,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
if (State == EnumTaskState.Idle)
|
if (State == EnumTaskState.Idle)
|
||||||
{
|
{
|
||||||
State = EnumTaskState.Running;
|
State = EnumTaskState.Running;
|
||||||
m_loadingOp = SceneManager.LoadSceneAsync(m_scenePath, LoadSceneMode.Additive);
|
m_loadingOp = SceneManager.LoadSceneAsync(m_scenePath, LoadSceneMode.Single);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (State == EnumTaskState.Running)
|
else if (State == EnumTaskState.Running)
|
||||||
|
@ -3,14 +3,13 @@ using DG.Tweening;
|
|||||||
using DG.Tweening.Core;
|
using DG.Tweening.Core;
|
||||||
using DG.Tweening.Plugins.Options;
|
using DG.Tweening.Plugins.Options;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using static Codice.Client.BaseCommands.Import.Commit;
|
||||||
using App = AxibugEmuOnline.Client.ClientCore.AppAxibugEmuOnline;
|
using App = AxibugEmuOnline.Client.ClientCore.AppAxibugEmuOnline;
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public class Game_NES : MenuItem
|
public class Game_NES : MenuItem
|
||||||
{
|
{
|
||||||
[SerializeField]
|
|
||||||
ItemPresent RomGroup;
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
CanvasGroup RomGroupRoot;
|
CanvasGroup RomGroupRoot;
|
||||||
private TweenerCore<float, float, FloatOptions> m_showTween;
|
private TweenerCore<float, float, FloatOptions> m_showTween;
|
||||||
@ -21,6 +20,25 @@ namespace AxibugEmuOnline.Client
|
|||||||
RomGroupRoot.alpha = 0;
|
RomGroupRoot.alpha = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void SetSelectState(bool selected)
|
||||||
|
{
|
||||||
|
if (m_select == selected) return;
|
||||||
|
|
||||||
|
m_select = selected;
|
||||||
|
|
||||||
|
if (ShadowIcon != null) ShadowIcon.gameObject.SetActiveEx(selected);
|
||||||
|
|
||||||
|
if (progressTween != null) { progressTween.Kill(); progressTween = null; }
|
||||||
|
|
||||||
|
progressTween = DOTween.To(() => m_progress, (x) => m_progress = x, m_select ? 1 : 0, 5)
|
||||||
|
.SetSpeedBased().OnUpdate(() =>
|
||||||
|
{
|
||||||
|
if (InfoNode != null) InfoNode.alpha = m_progress;
|
||||||
|
|
||||||
|
Root.localScale = Vector3.one * Mathf.Lerp(UnSelectScale, SelectScale, m_progress);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public override void OnEnterItem()
|
public override void OnEnterItem()
|
||||||
{
|
{
|
||||||
RomGroupRoot.gameObject.SetActive(true);
|
RomGroupRoot.gameObject.SetActive(true);
|
||||||
@ -35,9 +53,14 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
App.nesRomLib.FetchRomCount((roms) =>
|
App.nesRomLib.FetchRomCount((roms) =>
|
||||||
{
|
{
|
||||||
RomGroup.UpdateDependencyProperty(App.nesRomLib);
|
var thirdMenuGroup = SubMenuItemGroup as ThirdMenuRoot;
|
||||||
RomGroup.SetData(roms);
|
thirdMenuGroup.itemGroup.UpdateDependencyProperty(thirdMenuGroup);
|
||||||
|
thirdMenuGroup.itemGroup.SetData(roms);
|
||||||
|
thirdMenuGroup.itemGroup.UpdateProxyVisualState();
|
||||||
|
thirdMenuGroup.SelectIndex = 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (SubMenuItemGroup != null) SubMenuItemGroup.SetSelect(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnExitItem()
|
public override void OnExitItem()
|
||||||
@ -52,6 +75,8 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
RomGroupRoot.gameObject.SetActive(false);
|
RomGroupRoot.gameObject.SetActive(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (SubMenuItemGroup != null) SubMenuItemGroup.SetSelect(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,8 @@ namespace AxibugEmuOnline.Client
|
|||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
Instance = this;
|
Instance = this;
|
||||||
|
DontDestroyOnLoad(this);
|
||||||
|
DontDestroyOnLoad(Camera.main.gameObject);
|
||||||
m_mainLayoutPosition = MainMenuRoot.anchoredPosition;
|
m_mainLayoutPosition = MainMenuRoot.anchoredPosition;
|
||||||
MainMenu.ListenControlAction = true;
|
MainMenu.ListenControlAction = true;
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,7 @@ using UnityEngine.UI;
|
|||||||
|
|
||||||
namespace AxibugEmuOnline.Client.UI
|
namespace AxibugEmuOnline.Client.UI
|
||||||
{
|
{
|
||||||
public class MainMenuController : MenuItemController
|
public class MainMenuController : MenuItemController<MenuData>
|
||||||
{
|
{
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
HorizontalLayoutGroup GroupRoot;
|
HorizontalLayoutGroup GroupRoot;
|
||||||
@ -34,7 +34,9 @@ namespace AxibugEmuOnline.Client.UI
|
|||||||
m_runtimeMenuUICanvas = m_runtimeMenuUI.Select(menu => menu.gameObject.AddComponent<CanvasGroup>()).ToList();
|
m_runtimeMenuUICanvas = m_runtimeMenuUI.Select(menu => menu.gameObject.AddComponent<CanvasGroup>()).ToList();
|
||||||
m_runtimeMenuUICanvas.ForEach(canv => canv.gameObject.AddComponent<AutoRaycastCanvasGroup>());
|
m_runtimeMenuUICanvas.ForEach(canv => canv.gameObject.AddComponent<AutoRaycastCanvasGroup>());
|
||||||
}
|
}
|
||||||
|
public override void Init(List<MenuData> menuDataList)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public void EnterDetailState()
|
public void EnterDetailState()
|
||||||
{
|
{
|
||||||
|
@ -10,28 +10,28 @@ namespace AxibugEmuOnline.Client.UI
|
|||||||
public class MenuItem : MonoBehaviour
|
public class MenuItem : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
Image Icon;
|
protected Image Icon;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
Text Txt;
|
protected Text Txt;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
Text Descript;
|
protected Text Descript;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
Transform Root;
|
protected Transform Root;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
Image ShadowIcon;
|
protected Image ShadowIcon;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
CanvasGroup InfoNode;
|
protected CanvasGroup InfoNode;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
SubMenuItemGroup SubMenuItemGroup;
|
protected SubMenuItemGroup SubMenuItemGroup;
|
||||||
|
|
||||||
public float SelectScale = 1f;
|
public float SelectScale = 1f;
|
||||||
public float UnSelectScale = 0.85f;
|
public float UnSelectScale = 0.85f;
|
||||||
|
|
||||||
public RectTransform Rect => transform as RectTransform;
|
public RectTransform Rect => transform as RectTransform;
|
||||||
|
|
||||||
bool m_select;
|
protected bool m_select;
|
||||||
TweenerCore<float, float, FloatOptions> progressTween;
|
protected TweenerCore<float, float, FloatOptions> progressTween;
|
||||||
float m_progress;
|
protected float m_progress;
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
m_select = false;
|
m_select = false;
|
||||||
@ -65,7 +65,7 @@ namespace AxibugEmuOnline.Client.UI
|
|||||||
if (ShadowIcon != null) ShadowIcon.sprite = icon;
|
if (ShadowIcon != null) ShadowIcon.sprite = icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetSelectState(bool selected)
|
public virtual void SetSelectState(bool selected)
|
||||||
{
|
{
|
||||||
if (m_select == selected) return;
|
if (m_select == selected) return;
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
using AxibugEmuOnline.Client.UI;
|
using AxibugEmuOnline.Client.UI;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -7,35 +6,36 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
public abstract class MenuItemController : MonoBehaviour
|
public abstract class MenuItemController : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField]
|
public enum EnumCommand
|
||||||
float PulseInvoke_Delay = 0.4f;
|
|
||||||
[SerializeField]
|
|
||||||
float PulseInvoke_Interval = 0.05f;
|
|
||||||
|
|
||||||
private bool m_listenControlAction;
|
|
||||||
public bool ListenControlAction
|
|
||||||
{
|
{
|
||||||
get => m_listenControlAction;
|
SelectItemLeft,
|
||||||
set
|
SelectItemRight,
|
||||||
{
|
SelectItemUp,
|
||||||
m_listenControlAction = value;
|
SelectItemDown,
|
||||||
|
Enter,
|
||||||
if (value)
|
Back,
|
||||||
CommandDispatcher.Instance.RegistController(this);
|
OptionMenu
|
||||||
else
|
|
||||||
CommandDispatcher.Instance.UnRegistController(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
protected Transform m_menuItemRoot;
|
||||||
|
protected List<MenuItem> m_runtimeMenuUI = new List<MenuItem>();
|
||||||
|
|
||||||
private PulseInvoker m_pulsInvoker_Left;
|
private PulseInvoker m_pulsInvoker_Left;
|
||||||
private PulseInvoker m_pulsInvoker_Right;
|
private PulseInvoker m_pulsInvoker_Right;
|
||||||
private PulseInvoker m_pulsInvoker_Up;
|
private PulseInvoker m_pulsInvoker_Up;
|
||||||
private PulseInvoker m_pulsInvoker_Down;
|
private PulseInvoker m_pulsInvoker_Down;
|
||||||
|
MenuItem m_enteredItem = null;
|
||||||
|
|
||||||
private int m_selectIndex = -1;
|
[SerializeField]
|
||||||
protected List<MenuItem> m_runtimeMenuUI = new List<MenuItem>();
|
float PulseInvoke_Delay = 0.4f;
|
||||||
|
[SerializeField]
|
||||||
|
float PulseInvoke_Interval = 0.05f;
|
||||||
|
|
||||||
public int SelectIndex
|
protected int m_selectIndex = -1;
|
||||||
|
|
||||||
|
public virtual int SelectIndex
|
||||||
{
|
{
|
||||||
get => m_selectIndex;
|
get => m_selectIndex;
|
||||||
set
|
set
|
||||||
@ -48,15 +48,15 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[SerializeField]
|
|
||||||
protected Transform m_menuItemRoot;
|
|
||||||
|
|
||||||
protected virtual void Start()
|
protected virtual void Start()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < m_menuItemRoot.childCount; i++)
|
if (m_menuItemRoot != null)
|
||||||
{
|
{
|
||||||
Transform child = m_menuItemRoot.GetChild(i);
|
for (int i = 0; i < m_menuItemRoot.childCount; i++)
|
||||||
m_runtimeMenuUI.Add(child.GetComponent<MenuItem>());
|
{
|
||||||
|
Transform child = m_menuItemRoot.GetChild(i);
|
||||||
|
m_runtimeMenuUI.Add(child.GetComponent<MenuItem>());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Canvas.ForceUpdateCanvases();
|
Canvas.ForceUpdateCanvases();
|
||||||
@ -68,11 +68,6 @@ namespace AxibugEmuOnline.Client
|
|||||||
m_pulsInvoker_Down = new PulseInvoker(OnCmdSelectItemDown, PulseInvoke_Delay, PulseInvoke_Interval);
|
m_pulsInvoker_Down = new PulseInvoker(OnCmdSelectItemDown, PulseInvoke_Delay, PulseInvoke_Interval);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDestroy()
|
|
||||||
{
|
|
||||||
if (CommandDispatcher.Instance != null)
|
|
||||||
CommandDispatcher.Instance.UnRegistController(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void Update()
|
protected virtual void Update()
|
||||||
{
|
{
|
||||||
@ -82,9 +77,6 @@ namespace AxibugEmuOnline.Client
|
|||||||
m_pulsInvoker_Down.Update(Time.deltaTime);
|
m_pulsInvoker_Down.Update(Time.deltaTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void OnSelectMenuChanged();
|
|
||||||
|
|
||||||
MenuItem m_enteredItem = null;
|
|
||||||
public void ExecuteCommand(EnumCommand cmd, bool cancel)
|
public void ExecuteCommand(EnumCommand cmd, bool cancel)
|
||||||
{
|
{
|
||||||
if (!cancel)
|
if (!cancel)
|
||||||
@ -170,15 +162,39 @@ namespace AxibugEmuOnline.Client
|
|||||||
protected virtual void OnCmdOptionMenu() { }
|
protected virtual void OnCmdOptionMenu() { }
|
||||||
protected virtual void OnCmdEnter(MenuItem item) { item.OnEnterItem(); }
|
protected virtual void OnCmdEnter(MenuItem item) { item.OnEnterItem(); }
|
||||||
protected virtual void OnCmdBack(MenuItem item) { item.OnExitItem(); }
|
protected virtual void OnCmdBack(MenuItem item) { item.OnExitItem(); }
|
||||||
public enum EnumCommand
|
protected abstract void OnSelectMenuChanged();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class MenuItemController<T> : MenuItemController
|
||||||
|
{
|
||||||
|
private bool m_listenControlAction;
|
||||||
|
public bool ListenControlAction
|
||||||
{
|
{
|
||||||
SelectItemLeft,
|
get => m_listenControlAction;
|
||||||
SelectItemRight,
|
set
|
||||||
SelectItemUp,
|
{
|
||||||
SelectItemDown,
|
m_listenControlAction = value;
|
||||||
Enter,
|
|
||||||
Back,
|
if (value)
|
||||||
OptionMenu
|
CommandDispatcher.Instance.RegistController(this);
|
||||||
|
else
|
||||||
|
CommandDispatcher.Instance.UnRegistController(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract void Init(List<T> menuDataList);
|
||||||
|
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
if (CommandDispatcher.Instance != null)
|
||||||
|
CommandDispatcher.Instance.UnRegistController(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
public int Index { get; set; }
|
public int Index { get; set; }
|
||||||
|
|
||||||
private RomLib m_romlib;
|
private RomLib m_romlib => AppAxibugEmuOnline.nesRomLib;
|
||||||
private RomFile m_romfile;
|
private RomFile m_romfile;
|
||||||
|
|
||||||
public void SetData(object data)
|
public void SetData(object data)
|
||||||
@ -34,7 +34,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
public void SetDependencyProperty(object data)
|
public void SetDependencyProperty(object data)
|
||||||
{
|
{
|
||||||
m_romlib = (RomLib)data;
|
SetSelectState(data is ThirdMenuRoot tr && tr.SelectIndex == Index);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Release()
|
public void Release()
|
||||||
@ -74,6 +74,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
AppAxibugEmuOnline.SceneLoader.BeginLoad("Scene/EmuTest", () =>
|
AppAxibugEmuOnline.SceneLoader.BeginLoad("Scene/EmuTest", () =>
|
||||||
{
|
{
|
||||||
var nesEmu = GameObject.FindObjectOfType<NesEmulator>();
|
var nesEmu = GameObject.FindObjectOfType<NesEmulator>();
|
||||||
|
nesEmu.StartGame(m_romfile);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ using UnityEngine;
|
|||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public class SubMenuItemGroup : MenuItemController
|
public class SubMenuItemGroup : MenuItemController<MenuData>
|
||||||
{
|
{
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
MenuItem SubMenuItemTemplate;
|
MenuItem SubMenuItemTemplate;
|
||||||
@ -28,7 +28,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
alphaGroup.alpha = 0;
|
alphaGroup.alpha = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Init(List<MenuData> menuDataList)
|
public override void Init(List<MenuData> menuDataList)
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
while (transform.childCount > 0)
|
while (transform.childCount > 0)
|
||||||
@ -86,7 +86,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
SelectIndex++;
|
SelectIndex++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetSelect(bool select)
|
public virtual void SetSelect(bool select)
|
||||||
{
|
{
|
||||||
if (m_selected == select) return;
|
if (m_selected == select) return;
|
||||||
m_selected = select;
|
m_selected = select;
|
||||||
|
@ -1,14 +1,43 @@
|
|||||||
|
using AxibugEmuOnline.Client.UI;
|
||||||
|
using DG.Tweening;
|
||||||
|
using System.Collections.Generic;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public class ThirdMenuRoot : MonoBehaviour
|
public class ThirdMenuRoot : SubMenuItemGroup
|
||||||
{
|
{
|
||||||
private RectTransform m_rect;
|
private RectTransform m_rect;
|
||||||
private RectTransform m_parent;
|
private RectTransform m_parent;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
private RectTransform m_selectArrow;
|
||||||
|
[SerializeField]
|
||||||
|
float ArrowOffset = 50;
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
float WidthFix = 50;
|
float WidthFix = 50;
|
||||||
|
[SerializeField]
|
||||||
|
public ItemPresent itemGroup;
|
||||||
|
[SerializeField]
|
||||||
|
ScrollRect srollRect;
|
||||||
|
|
||||||
|
public override int SelectIndex
|
||||||
|
{
|
||||||
|
get => m_selectIndex;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (itemGroup.DataList == null) return;
|
||||||
|
|
||||||
|
value = Mathf.Clamp(value, 0, itemGroup.DataList.Count - 1);
|
||||||
|
if (m_selectIndex == value) return;
|
||||||
|
bool useAnim = m_selectIndex != -1;
|
||||||
|
m_selectIndex = value;
|
||||||
|
|
||||||
|
RollToIndex(m_selectIndex, useAnim);
|
||||||
|
OnSelectMenuChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
@ -21,6 +50,29 @@ namespace AxibugEmuOnline.Client
|
|||||||
SyncRectToLaunchUI();
|
SyncRectToLaunchUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnSelectMenuChanged()
|
||||||
|
{
|
||||||
|
itemGroup.UpdateDependencyProperty(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RollToIndex(int index, bool useAnim = false)
|
||||||
|
{
|
||||||
|
Vector2 itemPos = itemGroup.GetItemAnchorePos(index);
|
||||||
|
|
||||||
|
Vector3[] corners = new Vector3[4];
|
||||||
|
Vector2 targetPos = itemGroup.transform.InverseTransformPoint(m_selectArrow.position);
|
||||||
|
itemGroup.RectTransform.GetLocalCorners(corners);
|
||||||
|
targetPos = targetPos - (Vector2)corners[1];
|
||||||
|
|
||||||
|
float gap = targetPos.y - itemPos.y;
|
||||||
|
|
||||||
|
srollRect.velocity = Vector2.zero;
|
||||||
|
if (!useAnim)
|
||||||
|
srollRect.content.anchoredPosition += new Vector2(0, gap);
|
||||||
|
else
|
||||||
|
srollRect.content.anchoredPosition += new Vector2(0, gap);
|
||||||
|
}
|
||||||
|
|
||||||
Vector3[] corner = new Vector3[4];
|
Vector3[] corner = new Vector3[4];
|
||||||
private void SyncRectToLaunchUI()
|
private void SyncRectToLaunchUI()
|
||||||
{
|
{
|
||||||
@ -48,6 +100,21 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
var widthGap = parentPosition.x - rootPosition.x;
|
var widthGap = parentPosition.x - rootPosition.x;
|
||||||
m_rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, launchUIRect.rect.width - widthGap - WidthFix);
|
m_rect.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, launchUIRect.rect.width - widthGap - WidthFix);
|
||||||
|
|
||||||
|
m_selectArrow.position = m_parent.transform.position;
|
||||||
|
temp = m_selectArrow.anchoredPosition;
|
||||||
|
temp.x += ArrowOffset;
|
||||||
|
m_selectArrow.anchoredPosition = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnCmdSelectItemDown()
|
||||||
|
{
|
||||||
|
base.OnCmdSelectItemDown();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnCmdSelectItemUp()
|
||||||
|
{
|
||||||
|
base.OnCmdSelectItemUp();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"com.unity.2d.sprite": "1.0.0",
|
||||||
"com.unity.collab-proxy": "1.15.15",
|
"com.unity.collab-proxy": "1.15.15",
|
||||||
"com.unity.editorcoroutines": "1.0.0",
|
"com.unity.editorcoroutines": "1.0.0",
|
||||||
"com.unity.ide.rider": "3.0.13",
|
"com.unity.ide.rider": "3.0.13",
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"com.unity.2d.sprite": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"depth": 0,
|
||||||
|
"source": "builtin",
|
||||||
|
"dependencies": {}
|
||||||
|
},
|
||||||
"com.unity.collab-proxy": {
|
"com.unity.collab-proxy": {
|
||||||
"version": "1.15.15",
|
"version": "1.15.15",
|
||||||
"depth": 0,
|
"depth": 0,
|
||||||
|
Loading…
Reference in New Issue
Block a user