【问题标题】:Unity3D trying to understand MonoscriptUnity3D 试图理解 Monoscript
【发布时间】:2020-09-14 23:18:51
【问题描述】:

根据Unity tutorial,我正在尝试了解 Monoscript 是做什么的

了解 MonoBehaviour 引用 一个 MonoScript,而 MonoScripts 只包含所需的信息 找到特定的脚本类。两种类型的 Object 都不包含 脚本类的可执行代码。

MonoScript 包含三个字符串:程序集名称、类名称、 和一个命名空间。

这是否意味着,例如,在构建期间,从 MonoBehaviour 继承的每个 c# 类都会有一个 MonoScript 指向 Assembly-CSharp.dll 中的相应位置?

【问题讨论】:

  • 它似乎没有从 MonoScripts 继承任何东西,但似乎是一种存储类型信息(程序集、名称和命名空间)的数据类型。我认为它是项目中用于轻松检查和定位类型的类型指针。例如,AssetBundle 不包含任何代码,只有 MS。当加载到应用程序上时,MS 包含在项目中定位可执行代码的信息。然后用不在项目中的脚本加载 AB 将崩溃。就像将引用作为参数传递一样,您不会传递整个对象,因此它更轻。但参考知道在哪里可以找到真实数据。
  • 对不起,我的意思是继承自monobehevior
  • 看起来确实如此。 MonoBehaviour 类获取它们的 MonoScript 对象,以便 Unity 可以在程序集中找到它们。您是出于好奇而询问,还是有一个您认为可以通过了解更多信息来解决的特定问题?
  • 是的,我问的是好奇心,试图了解文件系统lol

标签: unity3d


【解决方案1】:

看起来是这样。请注意,它也适用于 ScriptableObjects:https://docs.unity3d.com/ScriptReference/MonoScript.html?_ga=2.112551556.1460905390.1600095105-379318471.1582836001

请记住,除了您提到的那个之外,还有其他一些程序集,例如“first pass”和“Editor”变体。同样来自 Unity 的文档:

“MonoBehaviour 提供了一个链接到 MonoScript 的包装器。MonoScript 是一种内部数据类型,Unity 使用它来保存对特定程序集和命名空间中特定脚本类的引用。MonoScript 不包含任何实际的可执行代码。”

这听起来很像你说的。这段摘录可以在这里找到:https://learn.unity.com/tutorial/assets-resources-and-assetbundles#5c7f8528edbc2a002053b5a6。您可能需要一个帐户才能访问它。

【讨论】:

    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 2020-04-06
    • 2023-03-07
    • 2011-03-28
    • 2011-11-27
    • 2017-08-11
    • 1970-01-01
    • 2013-08-18
    相关资源
    最近更新 更多