是否可以将默认引用分配给 Unity 中的非 MonoBehaviour 类

Posted

技术标签:

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

我有这个非 Monobehaviour 类,我想为它分配一个 scriptableObject 引用。 如果我的类从 Monobehaviour 派生,我可以轻松分配默认引用: 但如果不是,则不允许: 有没有办法将默认引用分配给非 Monobehaviour 类?或者是否有其他解决方法?谢谢

【问题讨论】:

你有理由认为你的课程不应该是 Monobehaviour 吗? 嗯,需要引用 scriptableObject 的类是从其他非 Monobehaviour 类派生的。所以在一件事情上我真的别无选择。我遇到这个问题已经有一段时间了,只是不知道什么是解决此类问题的好方法。 【参考方案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 中并毫无问题地使用它

以上是关于是否可以将默认引用分配给 Unity 中的非 MonoBehaviour 类的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从 PHP 中的闭包返回引用?

我可以为 YAML 层次结构中的非叶节点分配值吗?

如何将指针分配给函数中的新对象,而该对象在退出后不会消失[重复]

“在将哈希分配给 perl 中的哈希时,“不能使用字符串 (””) 作为哈希引用,而“严格引用”在使用时出现错误

哪些值可以分配给 `constexpr` 引用?

多线程应用程序中的非解剖分配