【发布时间】:2021-05-26 19:03:43
【问题描述】:
我在四处搜索时遇到了麻烦,可能严重误解了 Unity 希望您如何构建项目,但这是我的情况:
我的游戏中有角色,想在编辑器中配置它们。我制作了代表不同行为类型和可以执行的动作的类。 我有没有办法在为这些类键入的脚本上创建一个字段,以便我可以使用检查器拖放来配置不同的预制件?
这里有一些代码演示了这种情况:
Unit.cs
// A unit on the board.
public class Unit : MonoBehaviour
{
public UnitAction action;
}
UnitAction.cs
// A unit on the board.
public class UnitAction : MonoBehaviour
{
// Does things
}
一旦将此脚本应用于预制件,这些字段就会显示在检查器中,但没有填充默认字段值的选项。如果我将字段类型设为UnityEngine.Object,我可以将脚本放在那里,但这似乎是我不想要的。
【问题讨论】:
-
那么问题是什么?您需要为您的公共字段设置正确的类型,例如,如果您想添加一个 GameObject 预制件,请将其声明为
public GameObject go或转换/脚本或您需要的任何内容。 -
我遇到的问题是我在类中有这些字段并且它显示在检查器中,但我无法将任何 UnitBehavior 或 UnitAction 脚本应用于该字段。它不允许我将它们从资产中拖过来,当我单击浏览时,列表中没有任何内容。我可以将此脚本应用到与预制件上的单元脚本相同的级别,但不能作为单元脚本上的字段。我需要将这些脚本附加到某些东西上,然后才能将它们应用到该领域吗?在这种情况下,UnitBehavior 和 UnitAction 都继承自 MonoBehavior。
-
@TylerHackbarth 你想在编辑器中的脚本上有默认字段吗?要实际填充这些字段,它们必须位于场景中的对象上或作为预制件。
-
@TEEBQNE 是的,就是这样。我想使用编辑器来配置具有不同动作集或其他任何东西的不同单元。谢谢!是否存在与为此目的可能拥有许多游戏对象相关的开销?我的直觉是在 Unity 编辑器中进行配置,而不是代码,但我不知道执行此操作的“Unity 方式”。
-
您将引用此类“脚本”的 instances .. 不是 脚本文件本身 ...