我正在尝试让一个类包含一系列具有相同界面的脚本。
这是我目前使用的三个脚本:
ICollisionScript.cs:
public interface ICollisionScript {
public void OnCollision(BallController ball) {
}
}
这是实现该接口的脚本框架示例,RandomEffect.cs:
public class RandomEffect: ICollisionScript {
public void OnCollision(BallController ball) {
// some random effect
}
}
最后,在“基本”脚本 BallController.cs 中,我想查看这些脚本的列表:
[SerializeReference] public List<ICollisionScript> collisionScripts;
我在 Unity 检查器中看到了这个;但是,如果我尝试将 RandomEffect.cs 文件/脚本拖到列表中,它根本不起作用。这是为什么?
Unity 不允许您将脚本直接拖到检查器中。您需要将它应用到一个游戏对象,然后您可以将其拖到列表中。
Unity 仅在脚本附加到对象时执行 Update() 和 MonoBehaviour 中的其他函数。这就是它不起作用的原因。
如果你想在 Unity 中引用脚本作为非单一行为对象,你可以使用 ScriptableObject