【问题标题】:Is it possible to assign default references to non MonoBehaviour class in Unity是否可以将默认引用分配给 Unity 中的非 MonoBehaviour 类
【发布时间】:2019-03-11 14:28:11
【问题描述】:

我有这个非 Monobehaviour 类,我想为它分配一个 scriptableObject 引用。
如果我的类从 Monobehaviour 派生,我可以轻松分配默认引用:



但如果不是,则不允许:



有没有办法将默认引用分配给非 Monobehaviour 类?或者是否有其他解决方法?谢谢

【问题讨论】:

  • 你有理由认为你的课程不应该是 Monobehaviour 吗?
  • 嗯,需要引用 scriptableObject 的类是从其他非 Monobehaviour 类派生的。所以在一件事情上我真的别无选择。我遇到这个问题已经有一段时间了,只是不知道什么是解决此类问题的好方法。

标签: c# class unity3d reference default


【解决方案1】:

您不能使用非 MonoBehaviour 类作为 GameObject 的组件。

如果您想在游戏中使用 ScriptableObjects,请创建以下两个脚本:

using UnityEngine;

[CreateAssetMenu(menuName = "MyScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    public string Data;
    //Any other data
}

和你的组件使用这个 ScriptableObject

public class MyMonoComponent : MonoBehaviour
{
    public MyScriptableObject Name; //Assignable in inspector
}

现在您可以创建 ScriptableObjects (RMB in project foder in unity -> 点击 MyScriptableObject) 并在检查器中分配它

【讨论】:

  • 感谢您的回复,但恐怕这不是我的选择。因为需要保存引用的类是从非 MonoBehaviour 的其他类派生的。这就是我需要的方式,所以不幸的是这行不通..:/
  • 您可以将非单声道类的引用存储在MyMonoComponent 中并毫无问题地使用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-22
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多