This commit is contained in:
2025-09-24 15:34:24 +08:00
parent 14f74b229c
commit 5be39ffe71
724 changed files with 1935656 additions and 0 deletions

View File

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

View File

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

View File

@@ -0,0 +1,54 @@
using Stary.Evo;
using System;
using System.Collections;
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
using YooAsset;
public class Launcher : MonoBehaviour
{
public GameObject Splash;
void Start()
{
if (Splash == null)
{
Splash = GameObject.Find(nameof(Splash));
}
StartCor();
}
private async void StartCor()
{
// var resourceCore = ResourceManager.Instance.GetResourceCore(UIConfig.UIPackageName);
//
// await resourceCore.InitializeAsync(UIConfig.UIPackageName);
await UIManager.Instance.InitUIConfig();
await UIManager.Instance.Preload<UILoadingView>();
Loading.Instance.StartLoading(EnterGameCor);
if (Splash != null)
{
Splash.SetActive(false);
}
}
IEnumerator EnterGameCor(Action<float, string> loadingRefresh)
{
loadingRefresh?.Invoke(0.3f, "loading..........1");
yield return new WaitForSeconds(0.5f);
loadingRefresh?.Invoke(0.6f, "loading..........2");
yield return new WaitForSeconds(0.5f);
loadingRefresh?.Invoke(1, "loading..........3");
yield return new WaitForSeconds(0.5f);
UIManager.Instance.Open<UILoginView>();
}
}

View File

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

View File

@@ -0,0 +1,93 @@
using System;
using System.Collections;
using UnityEngine;
namespace Stary.Evo
{
public class LoadingData
{
public LoadingFunc loadingFunc;
public bool isCleanupAsset = false;
}
public delegate IEnumerator LoadingFunc(Action<float, string> loadingRefresh);
/// <summary>
/// 实际游戏中的loading
/// </summary>
public class Loading : SingletonMono<Loading>
{
private LoadingData _loadingData;
private Coroutine _cor;
public void StartLoading(LoadingFunc loadingFunc, bool isCleanupAsset = false)
{
StartLoading(new LoadingData { loadingFunc = loadingFunc, isCleanupAsset = isCleanupAsset });
}
private void StartLoading(LoadingData loadingData)
{
//开启UI
UIManager.Instance.Open<UILoadingView>();
if (loadingData.loadingFunc != null)
{
_loadingData = loadingData;
if (_cor != null)
{
StopCoroutine(_cor);
}
_cor = StartCoroutine(CorLoading());
}
else
{
Debug.LogError("加载错误,没有参数LoadingData");
}
}
private IEnumerator CorLoading()
{
yield return StartCoroutine(_loadingData.loadingFunc(RefreshLoading));
// if (_loadingData != null && _loadingData.isCleanupAsset)
// {
// yield return ResourceManager.Instance.GetResourceCore(UIConfig.UIPackageName).CleanupAsync();
// yield return Resources.UnloadUnusedAssets();
// }
// Pool.ReleaseAll();
// yield return null;
GC.Collect();
yield return null;
Exit();
_cor = null;
}
private void RefreshLoading(float loading, string desc)
{
// 刷新
var view = UIManager.Instance.GetView<UILoadingView>();
if (view != null)
{
view.SetLoading(loading, desc);
}
if (!string.IsNullOrEmpty(desc))
{
Debug.Log(desc);
}
}
private void Exit()
{
// 关闭UI
UIManager.Instance.Close<UILoadingView>();
ObjectPool<LoadingData>.Release(_loadingData);
_loadingData = null;
}
}
}

View File

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

View File

@@ -0,0 +1,10 @@
using System;
using System.Collections.Generic;
namespace Stary.Evo
{
public enum UIEvent
{
None,
}
}

View File

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

View File

@@ -0,0 +1,46 @@
using DG.Tweening;
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine.UI;
namespace Stary.Evo
{
public class UILoadingView : UIView
{
#region
#pragma warning disable 0649
[ControlBinding]
private TextMeshProUGUI TextDes;
[ControlBinding]
private Image Aniloading;
#pragma warning restore 0649
#endregion
public override void OnOpen(object userData)
{
base.OnOpen(userData);
Reset();
}
public void SetLoading(float value, string desc)
{
TextDes.text = $"{desc} {value * 100:F0}%";
}
public override void OnClose()
{
base.OnClose();
Reset();
}
public void Reset()
{
TextDes.text = "";
}
}
}

View File

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

View File

@@ -0,0 +1,106 @@
using System;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using TMPro;
using System.Collections;
namespace Stary.Evo
{
public class UITestItem : UILoopItem
{
#region
#pragma warning disable 0649
[ControlBinding] private TextMeshProUGUI Text;
[ControlBinding] private Button Button;
[ControlBinding] private GameObject Select;
#pragma warning restore 0649
#endregion
public override void OnInit()
{
base.OnInit();
Button.AddClick(() => { UIScrollView.Select(Index); });
}
public override void CheckSelect(int index)
{
base.CheckSelect(index);
Select.SetActive(index == Index);
}
protected override void OnUpdateData(IList dataList, int index, object userData)
{
base.OnUpdateData(dataList, index, userData);
Text.text = dataList[index].ToString();
}
}
public class UILoginView : UIView
{
#region
#pragma warning disable 0649
[ControlBinding] private Button ButtonStart;
[ControlBinding] private Button ButtonSetting;
[ControlBinding] private UIScrollView UIScrollView;
[ControlBinding] private GameObject Item;
[ControlBinding] private RawImage RawImage;
#pragma warning restore 0649
#endregion
public override void OnInit(UIControlData uIControlData, UIViewController controller)
{
base.OnInit(uIControlData, controller);
ButtonStart.AddClick(() =>
{
UIManager.Instance.Open<UIMessageBoxView>(ObjectPool<MessageBoxData>.Get()
.Set("提示", "测试弹窗。", () => { Debug.Log("确认"); }));
});
ButtonSetting.AddClick(() => { UIManager.Instance.Open<UITestView>(); });
UIScrollView.OnSelectChanged += (index) => { Debug.Log("选中了:" + index); };
}
public override void OnOpen(object userData)
{
base.OnOpen(userData);
// 模拟100个数据
List<int> list = new List<int>();
for (int i = 0; i < 100; i++)
{
list.Add(i);
}
UIScrollView.UpdateList(list, Item, typeof(UITestItem));
UIScrollView.Select(10);
UIModelManager.Instance.LoadModelToRawImage("Assets/UI/UISystemPackage/TestModel.prefab", RawImage,
scale: Vector3.one * 6, isOrth: false, orthSizeOrFOV: 60);
}
public override void OnAddListener()
{
base.OnAddListener();
}
public override void OnRemoveListener()
{
base.OnRemoveListener();
}
public override void OnClose()
{
base.OnClose();
UIModelManager.Instance.UnLoadModelByRawImage(RawImage);
}
}
}

View File

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

View File

@@ -0,0 +1,127 @@
using System;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using TMPro;
namespace Stary.Evo
{
public enum MessageBoxType
{
TwoButton,
OneButton,
}
public class MessageBoxData
{
const string DefaultConfirmName = "确认";
const string DefaultCancelName = "取消";
public string title;
public string content;
public Action confirm;
public Action cancel;
public string confirmName;
public string cancelName;
public MessageBoxType type;
public MessageBoxData Set(string title, string content, Action confirm, Action cancel = null
, string confirmName = DefaultConfirmName, string cancelName = DefaultCancelName)
{
this.title = title;
this.content = content;
this.confirm = confirm;
this.cancel = cancel;
this.confirmName = confirmName;
this.cancelName = cancelName;
this.type = MessageBoxType.TwoButton;
return this;
}
public MessageBoxData SetOneButton(string title, string content, Action confirm, Action cancel = null
, string confirmName = DefaultConfirmName)
{
this.title = title;
this.content = content;
this.confirm = confirm;
this.cancel = cancel;
this.confirmName = confirmName;
this.cancelName = null;
this.type = MessageBoxType.OneButton;
return this;
}
}
public class UIMessageBoxView : UIView
{
#region
#pragma warning disable 0649
[ControlBinding]
protected Button ButtonConfirm;
[ControlBinding]
protected TextMeshProUGUI TextTitle;
[ControlBinding]
protected TextMeshProUGUI TextContent;
[ControlBinding]
protected Button[] ButtonCloses;
[ControlBinding]
protected TextMeshProUGUI TextConfirm;
[ControlBinding]
protected TextMeshProUGUI TextCancel;
#pragma warning restore 0649
#endregion
MessageBoxData data;
public override void OnInit(UIControlData uIControlData, UIViewController controller)
{
base.OnInit(uIControlData, controller);
foreach (var button in ButtonCloses)
{
button.AddClick(() =>
{
data.cancel?.Invoke();
UIManager.Instance.Close(this);
});
}
ButtonConfirm.AddClick(() =>
{
data.confirm?.Invoke();
UIManager.Instance.Close(this);
});
}
public override void OnOpen(object userData)
{
base.OnOpen(userData);
data = userData as MessageBoxData;
TextTitle.text = data.title;
TextContent.text = data.content;
TextConfirm.text = data.confirmName;
TextCancel.text = data.cancelName;
LayoutRebuilder.ForceRebuildLayoutImmediate(TextContent.rectTransform);
ButtonCloses[1].gameObject.SetActive(data.type == MessageBoxType.TwoButton);
}
public override void OnAddListener()
{
base.OnAddListener();
}
public override void OnRemoveListener()
{
base.OnRemoveListener();
}
public override void OnClose()
{
base.OnClose();
ObjectPool<MessageBoxData>.Release(data);
}
}
}

View File

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

View File

@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using TMPro;
namespace Stary.Evo
{
public class UITestView : UIView
{
#region
#pragma warning disable 0649
[ControlBinding]
private Button ButtonClose;
#pragma warning restore 0649
#endregion
public override void OnInit(UIControlData uIControlData, UIViewController controller)
{
base.OnInit(uIControlData, controller);
ButtonClose.AddClick(() =>
{
UIManager.Instance.Close(this);
});
}
public override void OnOpen(object userData)
{
base.OnOpen(userData);
}
public override void OnAddListener()
{
base.OnAddListener();
}
public override void OnRemoveListener()
{
base.OnRemoveListener();
}
public override void OnClose()
{
base.OnClose();
}
}
}

View File

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

View File

@@ -0,0 +1,21 @@
{
"name": "HotUpdate_Test",
"rootNamespace": "HotUpdate_Test",
"references": [
"GUID:d1a793c2b6959e04ea45b972eaa369c8",
"GUID:e34a5702dd353724aa315fb8011f08c3",
"GUID:f3fa071c399c4383a9ff8115e53dfefc",
"GUID:6055be8ebefd69e48b49212b09b47b2f",
"GUID:f51ebe6a0ceec4240a699833d6309b23",
"GUID:6a5d7223300a2ef48aa366288a446472"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": false,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 50270576377bbec47a1c57c50cbefd64
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,54 @@
namespace R
{
public class Res
{
public class Test
{
public static class audios
{
}
public static class config
{
public const string domainconfig_asset = "Config_DomainConfig";
public const string uiconfig_asset = "Config_UIConfig";
}
public static class dll
{
public static class android
{
public const string hotupdate_test_dll_bytes = "Android_HotUpdate_Test.dll";
public const string hotupdate_test_pdb_bytes = "Android_HotUpdate_Test.pdb";
}
}
public static class prefabs
{
public const string test_prefab = "Prefabs_Test";
public static class uiloadingview
{
public const string uiloadingview_prefab = "UILoadingView_UILoadingView";
}
public static class uiloginview
{
public const string uiloginview_prefab = "UILoginView_UILoginView";
public const string uitestview_prefab = "UILoginView_UITestView";
}
public static class uimessagebox
{
public const string uimessageboxview_prefab = "UIMessageBox_UIMessageBoxView";
}
}
public static class scenes
{
}
public static class spriteatlas
{
}
public static class sprites
{
}
public static class video
{
}
}
}
}

View File

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

View File

@@ -0,0 +1,50 @@
using System.Threading.Tasks;
using Stary.Evo;
using UnityEngine;
namespace Test
{
public class TestDomain :DomainBase,IController
{
public override void OnEnter(string param)
{
base.OnEnter(param);
Debug.Log("UnityEvo: OnEnter进入成功");
GameObject go = new GameObject("Launcher");
go.AddComponent<Launcher>();
}
public override void OnExit()
{
base.OnExit();
GetArchitecture().OnDispose();
Debug.Log("UnityEvo: OnExit退出成功");
}
public override Task OnEnterAsync(string param)
{
Debug.Log("UnityEvo: OnEnterAsync进入成功");
return base.OnEnterAsync(param);
}
public override Task OnExitAsync()
{
Debug.Log("UnityEvo: OnEnterAsync退出成功");
return base.OnExitAsync();
}
public IArchitecture GetArchitecture()
{
return TestArchitecture.Interface;
}
}
public class TestArchitecture : Architecture<TestArchitecture>
{
protected override void Init()
{
//注册示例
//RegisterSystem<IScoreSystem>(new ScoreSystem());
}
}
}

View File

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

View File

@@ -0,0 +1 @@
该文件夹中的程序集定义文件,请勿删除,非常重要。

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4de06c0b5b477cb49b864d99dab160f4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: