新增实验框架

This commit is contained in:
2025-11-14 17:14:08 +08:00
parent 6d72129bae
commit bf81df9581
6 changed files with 540 additions and 19 deletions

View File

@@ -1,9 +1,6 @@
using Convention;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Convention.Experimental.PublicType;
using System;
using System.Collections.Generic;
namespace Convention.Experimental
{
@@ -16,14 +13,23 @@ namespace Convention.Experimental
/// </summary>
/// <param name="moduleType">Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><see cref="GameModule"/><3E><><EFBFBD><EFBFBD></param>
/// <returns>Ҫ<><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><see cref="GameModule"/></returns>
private static GameModule CreateModule(Type moduleType)
private static GameModule CreateModule(Type moduleType, int stackLayer = 0)
{
if (stackLayer >= 100)
{
throw new GameException($"Create module '{moduleType.FullName}' failed, recursion too deep, there may be a circular dependency.");
}
GameModule module = (GameModule)Activator.CreateInstance(moduleType);
if (module == null)
{
throw new GameException($"Can not create module '{moduleType.FullName}'");
}
// <20>ݹ鴴<DDB9><E9B4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3>
foreach (var dependenceType in module.Dependences())
_ = GetModule(dependenceType, stackLayer + 1);
LinkedListNode<GameModule> current = s_GameFrameworkModules.First;
while (current != null)
{
@@ -53,7 +59,7 @@ namespace Convention.Experimental
/// <param name="moduleType">Ҫ<><D2AA>ȡ<EFBFBD><C8A1><see cref="GameModule"/></param>
/// <returns>Ҫ<><D2AA>ȡ<EFBFBD><C8A1><see cref="GameModule"/></returns>
/// <remarks><3E><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>ȡ<EFBFBD><C8A1><see cref="GameModule"/><3E><><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><see cref="GameModule"/>ʵ<><CAB5><EFBFBD><EFBFBD></remarks>
private static GameModule GetModule(Type moduleType)
private static GameModule GetModule(Type moduleType, int stackLayer = 0)
{
foreach (GameModule module in s_GameFrameworkModules)
{
@@ -63,7 +69,7 @@ namespace Convention.Experimental
}
}
return CreateModule(moduleType);
return CreateModule(moduleType, stackLayer + 1);
}
/// <summary>