上传框架,上传unitask

This commit is contained in:
2025-04-11 09:56:06 +08:00
parent 9f9bb87821
commit 4e3c6861df
355 changed files with 73049 additions and 85 deletions

View File

@@ -69,6 +69,7 @@ namespace Stary.Evo.Editor
public static string packageName;
#region HyBridCLRBuild
[HideIf("@ packageName== \"Main\"")]
[Title("HyBridCLRBuild", titleAlignment: TitleAlignments.Centered)] [HideLabel]
public BuildAssetEntity hyBridClrBuildEntity =
new BuildAssetEntity("HyBridCLRBuild", "DllBuildTarget", () =>
@@ -168,11 +169,12 @@ namespace Stary.Evo.Editor
[InfoBox("服务器资源盘位未存在", InfoMessageType.Error, "@ _isCheckDriveExist==false")]
[InfoBox("1、映射网络驱动器\n2、添加http://192.168.31.100:5005/alist/HotRefresh地址\n3、设置盘符为Z盘", InfoMessageType.Info,
"@ _isCheckDriveExist==false")]
[HideIf("@ selectedPackageNames==\"Main\"")]
public string updateServerPath;
private bool _isCheckDriveExist;
[TitleGroup("UpdateAssetButton", alignment: TitleAlignments.Centered)] [HideLabel][ShowIf("@ _isCheckDriveExist&&BuildAssetDataSetting.environmentType== EnvironmentType.Release",true)]
[TitleGroup("UpdateAssetButton", alignment: TitleAlignments.Centered)] [HideLabel][ShowIf("@ _isCheckDriveExist&&BuildAssetDataSetting.environmentType== EnvironmentType.Release&&selectedPackageNames!=\"Main\"")]
public BuildAssetEntity onUpdateBuildPipelineEntity;
@@ -185,6 +187,7 @@ namespace Stary.Evo.Editor
}
else
{
Debug.LogWarning("[Build] 打包已经取消");
}
}

View File

@@ -10,6 +10,7 @@ namespace Stary.Evo.Editor
{
public BuiltinBuildPipelineViewer(BuildAssetDataSetting packageName) : base(packageName)
{
// isSimulate = false;
}
public override void ExecuteBuild()
@@ -42,8 +43,12 @@ namespace Stary.Evo.Editor
BuiltinBuildPipeline pipeline = new BuiltinBuildPipeline();
var buildResult = pipeline.Run(buildParameters, true);
if (buildResult.Success)
{
EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
base.ExecuteBuild();
base.ExecuteBuild();
}
}
}
}

View File

@@ -31,20 +31,50 @@ namespace Stary.Evo.Editor
[Button("创建Domain", ButtonSizes.Large)]
public async void CreatDomain()
{
if (GetCreatDomainAll().Count>0)
{
EditorUtility.DisplayDialog("错误!", "Domain仅可以创建一个请在下方删除存在的Domain", "确定");
return;
}
// if (GetCreatDomainAll().Count>0)
// {
// EditorUtility.DisplayDialog("错误!", "Domain仅可以创建一个请在下方删除存在的Domain", "确定");
// return;
// }
if (string.IsNullOrEmpty(domain))
{
EditorUtility.DisplayDialog("错误!", "请输入将要创建Domain的编号", "确定");
return;
}
string artDomainPath = $"{Application.dataPath}/Art/{domain}";
if (!Directory.Exists(artDomainPath))
{
Directory.CreateDirectory(artDomainPath);
//创建Animation文件夹
Directory.CreateDirectory(artDomainPath + "/Animation");
//创建Effects文件夹
Directory.CreateDirectory(artDomainPath + "/Effects");
//创建Fbx文件夹
Directory.CreateDirectory(artDomainPath + "/Fbx");
//创建Font文件夹
Directory.CreateDirectory(artDomainPath + "/Font");
//创建Materials文件夹
Directory.CreateDirectory(artDomainPath + "/Materials");
//创建Prefabs文件夹
Directory.CreateDirectory(artDomainPath + "/Prefabs");
//创建Scenes文件夹
Directory.CreateDirectory(artDomainPath + "/Scenes");
//创建/Scenes/Test文件夹
Directory.CreateDirectory(artDomainPath + "/Scenes/Test");
//创建Shader文件夹
Directory.CreateDirectory(artDomainPath + "/Shader");
//创建Textures文件夹
Directory.CreateDirectory(artDomainPath + "/Textures");
await File.WriteAllTextAsync(
$"{artDomainPath}/这里放所有美术的资源,因涉及打包依赖等原因,不建议在上一层节点新增文件夹,如涉及文件夹规范等问题请@张铮.hint", "");
}
string domainPath = $"{Application.dataPath}/Domain/{domain}";
if (Directory.Exists(domainPath+"/AddressableRes/Config/DomainConfig.asset"))
if (Directory.Exists(domainPath + "/AddressableRes/Config/DomainConfig.asset"))
{
EditorUtility.DisplayDialog("错误!", $"\"{domain}\"已经存在,无法创建", "确定");
return;
@@ -52,7 +82,7 @@ namespace Stary.Evo.Editor
Directory.CreateDirectory(domainPath);
//美术资源存放文件夹
//程序资源存放文件夹
string resPath = $"{domainPath}/AddressableRes";
Directory.CreateDirectory(resPath);
//创建音频文件夹
@@ -152,32 +182,34 @@ namespace Stary.Evo.Editor
string configPath = $"Assets/Domain/{domain}/HotUpdate/{hotfixDomain}.asmdef";
AssemblyDefinitionAsset assemblyDefinitionAsset =
AssetDatabase.LoadAssetAtPath<AssemblyDefinitionAsset>(configPath);
// 将程序集定义添加到 HybridCLR 热更列表
var settings = SettingsUtil.HybridCLRSettings;
if (!settings.hotUpdateAssemblyDefinitions.Contains(assemblyDefinitionAsset))
if (domain != "Main")
{
var assemblyList = settings.hotUpdateAssemblyDefinitions.ToList();
assemblyList.Add(assemblyDefinitionAsset);
SettingsUtil.HybridCLRSettings.hotUpdateAssemblyDefinitions = assemblyList.ToArray();
}
List<AssemblyDefinitionAsset> assemblies = new List<AssemblyDefinitionAsset>();
for (int i = 0; i < settings.hotUpdateAssemblyDefinitions.Length; i++)
{
if (settings.hotUpdateAssemblyDefinitions[i] != null)
// 将程序集定义添加到 HybridCLR 热更列表
var settings = SettingsUtil.HybridCLRSettings;
if (!settings.hotUpdateAssemblyDefinitions.Contains(assemblyDefinitionAsset))
{
assemblies.Add(settings.hotUpdateAssemblyDefinitions[i]);
var assemblyList = settings.hotUpdateAssemblyDefinitions.ToList();
assemblyList.Add(assemblyDefinitionAsset);
SettingsUtil.HybridCLRSettings.hotUpdateAssemblyDefinitions = assemblyList.ToArray();
}
List<AssemblyDefinitionAsset> assemblies = new List<AssemblyDefinitionAsset>();
for (int i = 0; i < settings.hotUpdateAssemblyDefinitions.Length; i++)
{
if (settings.hotUpdateAssemblyDefinitions[i] != null)
{
assemblies.Add(settings.hotUpdateAssemblyDefinitions[i]);
}
}
HybridCLRSettings.Instance.hotUpdateAssemblyDefinitions = assemblies.ToArray();
HybridCLRSettings.Save();
}
HybridCLRSettings.Instance.hotUpdateAssemblyDefinitions = assemblies.ToArray();
HybridCLRSettings.Save();
AssetDatabase.SaveAssets();
string domainClassPath = $"{scriptsPath}/{domainClassName}.cs";
//await File.WriteAllTextAsync($"{scriptsPath}/{domainClassName}.cs", domainTemplate);
await using (var writer = new StreamWriter(domainClassPath))
@@ -186,7 +218,8 @@ namespace Stary.Evo.Editor
domainTemplate = domainTemplate.Replace("ClassNameXX", domainClassName)
.Replace("ReturnArchitecture", architectureClassName)
.Replace("ArchitectureX", architectureClassName)
.Replace("NamespaceX", domain);
.Replace("NamespaceX", domain)
.Replace("DomainNameXX", domain);
await writer.WriteAsync(domainTemplate);
}
}
@@ -206,6 +239,7 @@ namespace Stary.Evo.Editor
base.Initialize();
domainList = GetCreatDomainAll();
}
/// <summary>
/// 获取全部作用域
/// </summary>
@@ -227,10 +261,10 @@ namespace Stary.Evo.Editor
domains = Array.Empty<string>();
}
return domains;
}
/// <summary>
/// 获取全部作用域
/// </summary>

View File

@@ -25,6 +25,11 @@ namespace Stary.Evo.Editor
[Button("", Icon = SdfIconType.XCircle, IconAlignment = IconAlignment.RightEdge)]
public void CloseDomain()
{
if (DomainName == "Main")
{
EditorUtility.DisplayDialog("提示", "主包Main作用域无法删除", "确定");
return;
}
bool isOk = EditorUtility.DisplayDialog("提示", "是否删除此Domain", "是", "否");
if (isOk)
{

View File

@@ -14,39 +14,39 @@ namespace Stary.Evo.Editor
{
protected BuildAssetDataSetting dataSetting;
protected bool isSimulate;
protected bool isRaw;
// protected bool isSimulate;
// protected bool isRaw;
[Title("清理构建缓存", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildCache")]
[InfoBox("当不勾选此项的时候,引擎会开启增量打包模式,会极大提高构建速度!")]
[OnValueChanged("SetBuildCacheToggle")]
[HideIf("isSimulate", true)]
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
public bool clearBuildCacheToggle;
[Title("依赖数据库", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("BuildCache")]
[InfoBox("当开启此项的时候,会极大提高构建速度!")]
[OnValueChanged("SetUseAssetDependencyDB")]
[HideIf("isSimulate", true)]
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
public bool useAssetDependencyDBToggle;
[Title("资源包的压缩方式", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("FileStyle"), HideLabel]
[OnValueChanged("SetCompression")]
[HideIf("@isSimulate==true || isRaw==true")]
[ShowIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.BuiltinBuildPipeline")]
public ECompressOption compression;
[Title("资源包文件名称样式", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("FileStyle"), HideLabel]
[OnValueChanged("SetFileNameStyle")]
[HideIf("isSimulate", true)]
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
public EFileNameStyle fileNameStyle;
[Title("首包资源文件的拷贝方式", titleAlignment: TitleAlignments.Centered)]
[HorizontalGroup("FileStyle"), HideLabel]
[OnValueChanged("SetCopyBuildinFileOption")]
[HideIf("isSimulate", true)]
[HideIf("@ dataSetting.selectedBuildPipelines==EBuildPipeline.EditorSimulateBuildPipeline")]
public EBuildinFileCopyOption copyBuildinFileOption;
[Title("首包资源文件的拷贝参数", titleAlignment: TitleAlignments.Centered)]
@@ -118,6 +118,10 @@ namespace Stary.Evo.Editor
public virtual void ExecuteBuild()
{
// GetPackageVersion();
if (dataSetting.packageName == "Main")
{
dataSetting.GetBuildPackageVersion(true);
}
}

View File

@@ -10,7 +10,8 @@ namespace Stary.Evo.Editor
{
public RawfileBuildpipelineViewer(BuildAssetDataSetting packageName) : base(packageName)
{
isRaw = true;
// isSimulate = false;
// isRaw = true;
}
@@ -41,8 +42,10 @@ namespace Stary.Evo.Editor
RawFileBuildPipeline pipeline = new RawFileBuildPipeline();
var buildResult = pipeline.Run(buildParameters, true);
if (buildResult.Success)
{
EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
base.ExecuteBuild();
base.ExecuteBuild();
}
}
}
}

View File

@@ -10,6 +10,7 @@ namespace Stary.Evo.Editor
{
public ScriptableBuildPipelineViewer(BuildAssetDataSetting packageName) : base(packageName)
{
//isSimulate = false;
}
public override void ExecuteBuild()
@@ -44,8 +45,10 @@ namespace Stary.Evo.Editor
ScriptableBuildPipeline pipeline = new ScriptableBuildPipeline();
var buildResult = pipeline.Run(buildParameters, true);
if (buildResult.Success)
{
EditorUtility.RevealInFinder(buildResult.OutputPackageDirectory);
base.ExecuteBuild();
base.ExecuteBuild();
}
}
/// <summary>

View File

@@ -10,7 +10,7 @@ namespace Stary.Evo.Editor
{
public SimulateBuildPipelineViewer(BuildAssetDataSetting packageName) : base(packageName)
{
isSimulate = true;
//isSimulate = true;
}
public override void ExecuteBuild()

View File

@@ -19,10 +19,12 @@ namespace Stary.Evo.Editor
private static string[] configNames = new[] { "DomainConfig" };
public static string DomainRoot
{
get { return Application.dataPath + "/Domain"; }
}
// public static string AtlasRemotedRoot
// {
// get { return Application.dataPath + "/AddressableRes/Sprites"; }
@@ -109,14 +111,43 @@ namespace Stary.Evo.Editor
//[MenuItem("Evo/Hotfix/标记资源")]
public static void AddMark()
{
// //清空主包旧数据
AssetBundleCollectorPackage assetBundleCollectorPackage = null;
// foreach (var package in AssetBundleCollectorSettingData.Setting.Packages)
// {
// if (package.PackageName == "Main")
// {
// assetBundleCollectorPackage = package;
// }
// }
// if (assetBundleCollectorPackage != null)
// {
// YooAsset.Editor.AssetBundleCollectorSettingData.RemovePackage(assetBundleCollectorPackage);
// }
// DomainRoot = DomainMainPath;
// packageName = "Main";
// Mark();
// CreateRes(packageName,
// $"{DomainRoot}/Main/AddressableRes",
// $"{DomainRoot}/Main/Script");
//copydll
AddHotfixAddressableDll();
//清空旧数据
YooAsset.Editor.AssetBundleCollectorSettingData.ClearAll();
//清空用户旧数据
packageName = "";
package = null;
foreach (var package in AssetBundleCollectorSettingData.Setting.Packages)
{
if (package.PackageName == BuildAssetWindow.GetBuildPackageName())
{
assetBundleCollectorPackage = package;
}
}
if (assetBundleCollectorPackage != null)
{
YooAsset.Editor.AssetBundleCollectorSettingData.RemovePackage(assetBundleCollectorPackage);
}
string configPath =
$"Assets/Domain/{BuildAssetWindow.GetBuildPackageName()}/Conf/HotfixMainResDomain.asset";
HotfixMainResDomain hotfixMainResDomain = AssetDatabase.LoadAssetAtPath<HotfixMainResDomain>(configPath);

View File

@@ -91,7 +91,7 @@ namespace Stary.Evo
}
// // 提供一个释放模块的 API
public static void Dispose()
public void Dispose()
{
for (int i = 0; i < mArchitecture.mSystems.Count; i++)
{
@@ -102,7 +102,8 @@ namespace Stary.Evo
{
mArchitecture.mDatas[i].Dispose();
}
_mEnumEventSystem.Dispose();
_mEnumEventSystem=null;
mArchitecture = null;
}

View File

@@ -169,5 +169,7 @@ namespace Stary.Evo
TResult SendQuery<TResult>(IQuery<TResult> query);
void Dispose();
}
}

View File

@@ -1,29 +1,66 @@
using System;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Serialization;
namespace Stary.Evo
{
[Serializable]
[CreateAssetMenu(fileName = "DomainConfig", menuName = "Evo/Create DomainConfig")]
public class DomainConfig : ScriptableObject
public class DomainConfig : SerializedScriptableObject
{
/// <summary>
/// 域id
/// </summary>
public string domain;
[Sirenix.OdinInspector.ReadOnly] public string domain;
/// <summary>
/// 入口命名空间
/// </summary>
[Sirenix.OdinInspector.ReadOnly] public string @namespace;
/// <summary>
/// 入口类
/// </summary>
[Sirenix.OdinInspector.ReadOnly] public string className;
public LoadResType loadResType;
[Sirenix.OdinInspector.ReadOnly] [ShowIf("loadResType", LoadResType.Prefab)]
/// <summary>
/// 入口预制体
/// </summary>
public string mainPrefab;
/// <summary>
/// 入口命名空间
/// </summary>
public string @namespace;
/// <summary>
/// 入口类
/// </summary>
public string className;
[ShowIf("loadResType", LoadResType.Scene)]
public string mainScene;
// [ShowIfGroup("loadResType", LoadResType.Prefab)]
// public PonitPrefabType ponitPrefabType;
// [ShowIfGroup("loadResType", LoadResType.Prefab)]
// [ShowIf("ponitPrefabType", PonitPrefabType.Plural)]
// [OnCollectionChanged("OnPointConfDichChanged")]
// public Dictionary<string, string> PonitConfDic = new Dictionary<string, string>();
// private void OnPointConfDichChanged(CollectionChangeInfo info, object value)
// {
// Debug.Log("Received callback BEFORE CHANGE with the following info: " + info +
// ", and the following collection instance: " + value);
// }
public enum LoadResType
{
Prefab,
Scene
}
// public enum PonitPrefabType
// {
// Single,
// Plural
// }
}
}

View File

@@ -25,7 +25,7 @@ namespace Stary.Evo
return self.GetArchitecture().RegisterEvent(key,onEvent);
}
public static IUnRegister RegisterEvent<T,T1,T2,T3>(this ICanRegisterEvent self,T key,Action<T1,T3> onEvent) where T : IConvertible
public static IUnRegister RegisterEvent<T,T1,T2,T3>(this ICanRegisterEvent self,T key,Action<T1,T2,T3> onEvent) where T : IConvertible
{
return self.GetArchitecture().RegisterEvent(key,onEvent);
@@ -53,7 +53,7 @@ namespace Stary.Evo
self.GetArchitecture().UnRegisterEvent(key,onEvent);
}
public static void UnRegisterEvent<T,T1,T2,T3>(this ICanRegisterEvent self,T key,Action<T1,T3> onEvent) where T : IConvertible
public static void UnRegisterEvent<T,T1,T2,T3>(this ICanRegisterEvent self,T key,Action<T1,T2,T3> onEvent) where T : IConvertible
{
self.GetArchitecture().UnRegisterEvent(key,onEvent);

View File

@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Stary.Evo
{
@@ -16,9 +18,11 @@ namespace Stary.Evo
public IUnRegister Register<T>(T key, Action onEvent)where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}";
if (mEvents.TryGetValue(kv, out var e))
{
var easyEvent = e.As<EasyEvent>();
return easyEvent.Register(onEvent);
}
@@ -31,7 +35,7 @@ namespace Stary.Evo
}
public IUnRegister Register<T,T1>(T key, Action<T1> onEvent)where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_{typeof(T1).Name}";
if (mEvents.TryGetValue(kv, out var e))
{
var easyEvent = e.As<EasyEvent<T1>>();
@@ -46,7 +50,7 @@ namespace Stary.Evo
}
public IUnRegister Register<T,T1,T2>(T key, Action<T1,T2> onEvent)where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_{typeof(T1).Name}_{typeof(T2).Name}";
if (mEvents.TryGetValue(kv, out var e))
{
var easyEvent = e.As<EasyEvent<T1,T2>>();
@@ -61,7 +65,7 @@ namespace Stary.Evo
}
public IUnRegister Register<T,T1,T2,T3>(T key, Action<T1,T2,T3> onEvent) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_{typeof(T1).Name}_{typeof(T2).Name}_{typeof(T3).Name}";
if (mEvents.TryGetValue(kv, out var e))
{
@@ -77,7 +81,7 @@ namespace Stary.Evo
}
public IUnRegister Register<T>(T key, Action<object[]> onEvent) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_objects";
if (mEvents.TryGetValue(kv, out var e))
{
@@ -93,7 +97,7 @@ namespace Stary.Evo
}
public void UnRegister<T>(T key, Action onEvent) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv = key.ToString();
if (mEvents.TryGetValue(kv, out var e))
{
@@ -102,7 +106,7 @@ namespace Stary.Evo
}
public void UnRegister<T,T1>(T key, Action<T1> onEvent) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_{typeof(T1).Name}";
if (mEvents.TryGetValue(kv, out var e))
{
@@ -111,7 +115,7 @@ namespace Stary.Evo
}
public void UnRegister<T,T1,T2>(T key, Action<T1,T2> onEvent) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_{typeof(T1).Name}_{typeof(T2).Name}";
if (mEvents.TryGetValue(kv, out var e))
{
@@ -120,7 +124,7 @@ namespace Stary.Evo
}
public void UnRegister<T,T1,T2,T3>(T key, Action<T1,T2,T3> onEvent) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_{typeof(T1).Name}_{typeof(T2).Name}_{typeof(T3).Name}";
if (mEvents.TryGetValue(kv, out var e))
{
@@ -129,64 +133,82 @@ namespace Stary.Evo
}
public void UnRegister<T>(T key, Action<object[]> onEvent) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_objects";
if (mEvents.TryGetValue(kv, out var e))
{
e.As<EasyEvent<object[]>>()?.UnRegister(onEvent);
}
}
public void UnRegisterAll()
{
mEvents.Clear();
}
public void Send<T>(T key) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv = key.ToString();
if (mEvents.TryGetValue(kv, out var e))
{
e.As<EasyEvent>().Trigger();
}
else
{
Debug.LogError($"UnityEvo没有找到对应的事件{kv}");
}
}
public void Send<T,T1>(T key, T1 t1) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_{typeof(T1).Name}";
if (mEvents.TryGetValue(kv, out var e))
{
e.As<EasyEvent<T1>>().Trigger(t1);
}
else
{
Debug.LogError($"UnityEvo没有找到对应的事件{kv}");
}
}
public void Send<T,T1,T2>(T key, T1 t1,T2 t2) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_{typeof(T1).Name}_{typeof(T2).Name}";
if (mEvents.TryGetValue(kv, out var e))
{
e.As<EasyEvent<T1,T2>>().Trigger(t1,t2);
}
else
{
Debug.LogError($"UnityEvo没有找到对应的事件{kv}");
}
}
public void Send<T,T1,T2,T3>(T key, T1 t1,T2 t2 ,T3 t3) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_{typeof(T1).Name}_{typeof(T2).Name}_{typeof(T3).Name}";
if (mEvents.TryGetValue(kv, out var e))
{
e.As<EasyEvent<T1,T2,T3>>().Trigger(t1,t2,t3);
}
else
{
Debug.LogError($"UnityEvo没有找到对应的事件{kv}");
}
}
public void Send<T>(T key, params object[] args) where T : IConvertible
{
var kv = typeof(T).ToString()+ key.ToInt32(null);
var kv =$"{key.ToString()}_objects";
if (mEvents.TryGetValue(kv, out var e))
{
e.As<EasyEvent<string,object[]>>().Trigger(kv,args);
}
else
{
Debug.LogError($"UnityEvo没有找到对应的事件{kv}");
}
}
#endregion

View File

@@ -11,11 +11,13 @@ namespace Stary.Evo
{
OnCollisionEnterEvent.Trigger(col);
}
}
public static class OnCollisionEnterEventTriggerExtension
{
public static IUnRegister OnCollisionEnterEvent<T>(this T self, Action<Collision> onCollisionEnter)
public static IUnRegister OnCollisionEnterEvent<T>(this T self, Action<Collision> onCollisionEnter)
where T : Component
{
return self.GetOrAddComponent<OnCollisionEnterEventTrigger>().OnCollisionEnterEvent

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;

View File

@@ -14,6 +14,10 @@
"type": "git",
"url": "http://192.168.31.100:8088/framework/xosmopluginlibrary.git#02.InformationSave"
},
"dependencies": {
"com.cysharp.unitask": "2.5.10",
"com.tuyoogame.yooasset": "2.3.7"
},
"samples": [
{
"displayName": "Framework Example Scenes",