成功使用RScript作为脚本初步运行

This commit is contained in:
2025-11-11 14:30:44 +08:00
parent 28a405fa1a
commit 832622b84c
5 changed files with 40 additions and 4 deletions

View File

@@ -183,7 +183,6 @@ MonoBehaviour:
TotalTimelineBar: {fileID: 8439816364275150554}
CurrentTimeText: {fileID: 2053773207632650149}
CurrentFPS: {fileID: 3211738389701231255}
CurrentProjectDefaultFileStyle: 0
IsLowPerformance: 0
LastLoadProjectName:
MainGameController: {fileID: 0}

View File

@@ -376,6 +376,7 @@ namespace Demo.Editor
private void Start()
{
GlobalConfig.ConstConfigFile = "config.easysave";
// Generate Framework
var generaters = DefaultInstantiate.GetScriptableObjectInstantiate();
foreach (var asm in AppDomain.CurrentDomain.GetAssemblies())

View File

@@ -441,6 +441,42 @@ namespace Demo
callback?.Invoke(child);
}
public IEnumerator DoGenerateSubScriptAsync([In] string type, string name, [Opt] Action<ScriptableObject> callback)
{
// 判断类型是否合法
if (DefaultInstantiate.GetScriptableObjectInstantiate().TryGetValue(type, out var creater) == false)
{
Debug.LogError($"{type} is not exist or {type}'s Instantiater is not valid", this);
callback?.Invoke(null);
yield break;
}
// 生成对象
var child = creater();
child.ScriptName = name;
child.transform.SetParent(this.transform);
child.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity);
child.transform.localScale = Vector3.one;
child.EnableScript("", "", type, this);
// Add Child
Childs.Add(child);
// Load Child Script
yield return child.LoadScript("");
LastLoadedScriptableObject = child;
callback?.Invoke(child);
}
/// <summary>
/// 创建子脚本
/// </summary>
/// <param name="type">指定类型</param>
public IEnumerator NewSubScript([In] string type)
{
return DoGenerateSubScriptAsync(type, $"New {type}", null);
}
/// <summary>
/// 加载子脚本
/// </summary>