Unity 中的特殊文件夹名称、程序集定义

Unity中的特殊文件夹:

Assets:主要的资源文件夹,使用AssetDatabase类来访问。

Editor:

  • 在Editor 文件夹下的脚本,只在editor下执行,不是runtime,Assets文件夹下可以有多个Editor文件夹,Editor文件夹的具体位置,影响程序集编译的顺序。
  • Unity 不允许将派生自 MonoBehaviour 的组件分配给游戏对象
  •  EditorGUIUtility.Load 函数可从 Editor 文件夹中的 Resources 文件夹加载资源。这些资源只能通过 Editor 脚本加载,并会从构建中剥离。

EditorDefaultResource:

  • 这是存放的GUI相关的一些资源,比如GUI.Button 里面的Image.
  • Editor 脚本可以使用通过 EditorGUIUtility.Load 函数按需加载的资源文件。此函数在名为 Editor Default Resources 的文件夹中查找资源文件。
  • 只能有一个 Editor Default Resources 文件夹,且必须将其放在项目的根目录中,直接位于 Assets 文件夹中。将所需的资源文件放在此 Editor Default Resources 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在传递给 EditorGUIUtility.Load 函数的路径中包含子文件夹路径。

StandardAssets:

在导入标准资源包时,会在Assets文件夹下创建一个该文件夹,该文件夹只能有一个

Resource:

可以有多个,跟随包体打包出来,通过Resource.Load加载,如果多个文件夹下,有相同名字的文件,默认加载最外层文件夹下的文件

StreamingAssets:

只允许有一个,只读的,不可更改

Plugin:

外部库文件,可以有多个

Gizmos:

下面的图标可以显示在scene中,通过Gizmos.DrawIcon 函数在场景中放置一个图标,作为特殊对象或位置的标记

只能有一个 Gizmos 文件夹,且必须将其放在项目的根目录,直接位于 Assets 文件夹中。将所需的资源文件放在此 Gizmos 文件夹内或其中的子文件夹内。如果资源文件位于子文件夹中,请始终在传递给 Gizmos.DrawIcon 函数的路径中包含子文件夹路径。

Android Asset Packs:

Unity把以 .androidpack结尾的文件夹编译成一个 Android asset packs. For more information, see Create a custom asset pack.

AndroidLib:

Unity 把以.androidlib 结尾的文件夹编译成一个Android Library Project. For more information, see Import and Android Library Project.

Untiy 自带的程序集分类:

Predefined assemblies

Unity 根据脚本的位置编译成四个不同阶段,每一个阶段对应一个程序集,如果这个阶段没有脚本,就不会生成对应的程序集. 这四个程序集叫 预定义程序集---Predefined assemblies

Precompiled assemblies

预先编译好的程序集,也就是通常放在plugin 下面的

Assembly Definition asset

自定义程序集.asmdef 文件

它们三者的关系是:Predefine 默认引用 其它两个,自定义默认引用Precompiled

                                Precompiled->.asmdef->Predefine

                                                     

阶段 程序集名称 脚本文件
1 Assembly-CSharp-firstpass 名为 Standard Assets、Pro Standard Assets 和 Plugins 的文件夹中脚本。不在Editor下。
2 Assembly-CSharp-Editor-firstpass 名为 Editor 的文件夹(位于名为 Standard Assets、Pro Standard Assets 和 Plugins 的顶级文件夹中的任意位置)中的 Editor 脚本。
3 Assembly-CSharp 不在名为 Editor 的文件夹中的所有其他脚本。
4 Assembly-CSharp-Editor 在名为 Editor 的文件夹中的所有其他脚本。

Unity 自定义程序集

Unity 中的版本定义:version numbers、

目前unity的版本组成分为三部分: MAJOR.MINOR.REVISION

比如2017.4.25f12018.4.29f1, and 2019.4.7f1.

  • MAJOR 表示release 的年份 2017 or 2021.
  • MINOR 表示版本, such as 1, 2, 3, or 4.
  • REVISION 由三部分组成, 格式为: RRzNN:
    • RR (修订号)是一位数或者两位数
    • z 表示release的版本类型:
      • a = alpha release
      • b = beta release
      • f = a normal public release
      • c = China release version (equivalent to f)
      • p = patch release
      • x = experimental release
    • NN 是一位数或者两位数的增量数

按照发版的时间递增顺序排序为:

a < b < f = c < p < x

  • 通过 UnityEditor.Compilation 空间下的CompilationPipeline 类,检索 Unity project下的assemble 信息,比如下面代码:
using UnityEditor;
using UnityEditor.Compilation;
public static class AssemblyLister
{
    [MenuItem("Tools/List Player Assemblies in Console")]
    public static void PrintAssemblyNames()
    {
        UnityEngine.Debug.Log("== Player Assemblies ==");
        Assembly[] playerAssemblies =
            CompilationPipeline.GetAssemblies(AssembliesType.Player);

        foreach (var assembly in playerAssemblies)
        {
            UnityEngine.Debug.Log(assembly.name);
        }
    }
}

程序集的属性:

  • Auto Referenced:是否被predefined 程序集引用
  • No Engine References:开启后,则不引用UnityEngine和UnityEditor程序集
  • Root Namespace:如果是rider/vs自动为该文件夹下创建的脚本,添加该命名空间
  • Override References:是否重新定义对precompiled 程序集的引用
  • Define Constraints:定义的是程序集层面的定义,不是脚本层面的,满足这里定义的条件,该程序集就会被编译,否则不被编译。
  • Use GUIDs:勾选这个,表示对程序集的引用是通过guid,否则是通过名字,勾选之后,如果源程序集更改了名字,也不用重新引用(重新拖拽)
  • Version Defines

  • 满足什么版本条件,才会编译该程序集

猜你喜欢

转载自blog.csdn.net/qq_37672438/article/details/130301366
今日推荐