我有一个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;
}
虽然,如果我正确理解了目标,也许看看预制件的概念会是一个好主意。