as 怎么将多个cpp文件代码编译成so_【Unity游戏开发】unity专属命名文件夹学习

项目结束了,新项目预研即将开始,整理好框架,准备战斗就是当前任务。
整理的时候,顺便了解了一下unity的专属文件夹功能,摘录一下别人文章,记录学习一下,代码整理得好,代码编译速度才快,提高工作效率

Resources

Resources 文件夹允许你在脚本中通过文件路径和名称来访问资源。放在这一文件夹的资源永远被包含进 build 中,即使它没有被使用。因为Unity无法判断脚本有没有访问了其中的资源。项目中可以有多个Resources文件夹,因此不建议在多个文件夹中放同名的资源。一旦build游戏,Resources 文件夹中的所有资源被打包进游戏存放资源的 archive 中。这样在游戏的 build 中就不存在 Resources 文件夹了。即使脚本中仍然使用了资源在项目中的路径。官方文档 注意: 当资源作为脚本变量被访问时,这些资源在脚本被实例化后就被加载进内存。如果资源太大,你可能不希望它被这样加载。那么你可以将这些大资源放进 Resources 文件夹中,通过 Resources.Load 来加载。当不再使用这些资源了,可以通过 Destroy 物体,再调用 Resources.UnloadUnusedAssets 来释放内存。 特点:

- 文件夹内资源打包集成 .asset 文件里面,例如一些 shader/material/prefab 等资源文件;
- 里面的资源只能是只读,不能动态修改,一般动态的更新的资源不雅放在这个文件夹内;
- 通过主线程加载;
- Resources.Load(); 加载资源
     Resources.LoadAll(); 加载所有资源
     Resources.LoadAsync(); 异步加载资源

Standard Assets

在这个文件夹中的脚本最先被编译。一般是放一些Unity 内置的一些资源。 这个文件夹中的脚本会被导出到Assembly-CSharp-firstpass,Assembly-UnityScript-firstpass 或 Assembly-Boo-firstpass项目中,依语言而定。 官方文档

在这个文件夹中的脚本比其他脚本都要先编译。将脚本放在这个文件夹里,就可以用C#脚本来访问js脚本或其他语言的脚本。

Editor

以Editor命名的文件夹允许其中的脚本访问UnityEditor的API。

如果脚本中使用了在UnityEditor命名空间中的类或方法,它必须被放在名为Editor的文件夹中。

Editor文件夹中的脚本不会在build时被包含。 在项目中可以有多个Editor文件夹。

[注意:如果在普通的文件夹下,Editor文件夹可以处于目录的任何层级。如果在特殊文件夹下,那Editor文件夹必须是特殊文件夹的直接子目录。]

Plugins

Plugins文件夹用来放native插件。它们会被自动包含进build中去。注意这个文件夹只能是Assets文件夹的直接子目录。

例如:

  • Windows:dll文件:
  • Mac OS X:bundle文件;
  • Linux下:.so文件。 和StandardAssets一样,这里的脚本会更早的编译,并且允许它们被之外的脚本访问。

5.1.Plugins/x86

5.2.Plugins/x86_64

如果为32bit或64bit平台创建游戏,那么这个文件夹下的native plugin文件会被自动的包含在游戏build中。
如果这个文件夹不存在,则Unity会查找Plugins文件夹下的native pluglins。
如果要创建universalbuild,建议你同时使用这两个文件夹。然后将32bit和64bit的native plugins放进相应的文件夹中。

5.3.Plugins/Android

在这个文件夹里放入Java.jar文件。用于java语言的plugins。.so文件也会被包含进来。 官方文档

5.4.Plugins/iOS

在这个文件夹放入.o、.m 、 .mm 、.c 、.cpp等文件,一般在IOS 平台导出对应的文件。 官方文档

StreamingAssets

这里的文件会被拷贝到 build 文件夹中,不会修改(移动和网页版不同,他们会被嵌入到最终 build 文件中)。它们的路径会因平台而有差异,但都可以通过 Application.streamingAssetsPath 来访问。

例如:有些游戏为了让所有的资源全部使用 assetbundle ,会把一些初始的 assetbundle 放在 StreamingAssets 目录下, StreamingAssets 目录下的资源都是不压缩的,而且它比较大会占空间。

Pro Standard Assets

和StandardAssets相同,只不过里面的文件是给Pro版本的Unity使用的。当然它的功能更为的丰富,例如一些高级内置的shader文件,只有在Pro版才能起作用。

Editor Default Resources

你可以把编辑器用到的一些资源放在这里,比如图片、文本文件、等等。它和Editor文件夹一样都不会被打到最终发布包里,仅仅用于开发时使用。你可以直接通过EditorGUIUtility.Load去读取该文件夹下的资源,
例如:

TextAsset text =    EditorGUIUtility.Load(“1.txt") as TextAsset;

Gizmos

Gizmos 文件夹存放用 Gizmos.DrawIcon 方法使用的贴图、图标资源。

放在 Gizmos 文件夹中的贴图资源可以直接通过名称使用,可以被 Editor 作为 gizmo 画在屏幕上。这里还是要说说 OnDrawGizmos() 方法,只要脚本继承了 MonoBehaviour 后,并且在编辑模式下就会每一帧都执行它。

发布的游戏肯定就不会执行了,它只能用于在 scene 视图中绘制一些小物件。比如要做摄像机轨迹,那么肯定是要在 Scene 视图中做一个预览的线,那么用 Gizmos.DrawLine 和 Gizmos.DrawFrustum 就再好不过了。

WebPlayerTemplates

用来替换 webbuild 的默认网页。这个文件夹中的脚本都不会被编译。这个文件夹必须作为 Assets 文件夹的直接子目录。

隐藏文件夹

以.开头的文件夹会被Unity忽略。在这种文件夹中的资源不会被导入,脚本不会被编译。也不会出现在Project视图中。这种文件我们可以在资源浏览器的时候,能找到这些文件。

总结:

把一些长时间不需要改动的脚本代码(比如各种插件代码)放入到Standard Assets文件夹下,可以提高unity代码的编译速度。

有朋友做过测试,在他们的项目中经过上面的改动,原来项目每次的编译时间从23s下降到7s。想想看,这将节省你和你的团队多少时间!

提升Unity编辑器中代码的编译速度 -- UWA问答​answer.uwa4d.com
v2-0372286ba2523da7d6aaed5ffa5c5649_ipico.jpg
https://lienzan.com/2018/11/12/Unity/UnityFolder/​lienzan.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值