为Scriptable Object创建一个脚本数组/列表



我有一个ItemObject它是一个ScriptedObject

在一个ItemObject我想创建一个数组/列表,存储在它的脚本

将存储在此数组/列表中的脚本将用于扩展GameObject的功能(想象为玩家的独特技能,而不是属性)

要做到这一点,我将添加脚本作为一个组件与Player.AddComponent(SCRIPT.GetType())

因此,假设在项目目录中创建项目资产后,我可以选择脚本技能的数量并通过检查器 添加它们。另外,作为一个可悲的选择,我正在考虑使用GameObject,它将脚本作为组件存储。对我来说,这是非常不方便的,因为可能有数百个剧本。不幸的是,我还没有足够的经验,所以这是目前为止我想到的最好的。

我用以下方法解决了我的问题:通过将脚本添加为Object并在控制台中显示其类型,我发现它是MonoScript

所以只要添加using UnityEditor,我就可以创建一个MonoScript 的列表
using UnityEditor;
class Script : MonoBehaviour
{
List<MonoScript> scripts
}

然后,使用[GameObject].AddComponent([MonoScript].GetClass()),我可以将这个脚本作为一个组件添加到GameObject

class AddScriptAsComponent : MonoBehaviour
{
GameObject object;
MonoScript script;
void Add()
{
object.AddComponent(script.GetClass())
}
}

你可以这样做

using UnityEngine;
public class ItemObject : ScriptableObject{
[SerializeField] List<MonoBehaviour> scripts;
}

虽然,如果我正确理解了目标,也许看看预制件的概念会是一个好主意。

最新更新