Unity3D研究院之手游开发中所有特殊的文件夹

https://www.xuanyusong.com/archives/3229

 

这里列举出手游开发中用到了所有特殊文件夹。

1.Editor

Editor文件夹可以在根目录下,也可以在子目录里,只要名子叫Editor就可以。比如目录:/xxx/xxx/Editor  和 /Editor 是一样的,无论多少个叫Editor的文件夹都可以。Editor下面放的所有资源文件或者脚本文件都不会被打进发布包中,并且脚本也只能在编辑时使用。一般呢会把一些工具类的脚本放在这里,或者是一些编辑时用的DLL。 比如我们现在要做类似技能编辑器,那么编辑器的代码放在这里是再好不过了,因为实际运行时我们只需要编辑器生成的文件,而不需要编辑器的核心代码。

2.Editor Default Resources

Editor Default Resources注意中间是有空格的,它必须放在Project视图的根目录下,如果你想放在/xxx/xxx/Editor Default Resources 这样是不行的。你可以把编辑器用到的一些资源放在这里,比如图片、文本文件、等等。它和Editor文件夹一样都不会被打到最终发布包里,仅仅用于开发时使用。你可以直接通过EditorGUIUtility.Load去读取该文件夹下的资源。

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

Debug.Log(text.text);

 

 

 

3.Gizmos

我觉得这个文件夹其实没什么用处,如下代码所示它可以在Scene视图里给某个坐标绘制一个icon。它的好处是可以传一个Vecotor3 作为图片显示的位置。 参数2就是图片的名子,当然这个图片必须放在Gizmos文件夹下面。

void OnDrawGizmos() {

    Gizmos.DrawIcon(transform.position, "0.png", true);

}

 


    

 

如果只想挂在某个游戏对象身上,那么在Inspecotr里面就可以直接设置。。


这里还是要说说OnDrawGizmos()方法,只要脚本继承了MonoBehaviour后,并且在编辑模式下就会每一帧都执行它。发布的游戏肯定就不会执行了,它只能用于在scene视图中绘制一些小物件。比如要做摄像机轨迹,那么肯定是要在Scene视图中做一个预览的线,那么用Gizmos.DrawLine 和Gizmos.DrawFrustum就再好不过了。

4.Plugins

如果做手机游戏开发一般 andoird 或者 ios 要接一些sdk 可以把sdk依赖的库文件 放在这里,比如 .so .jar .a 文件。这样打完包以后就会自动把这些文件打在你的包中。

5.Resources

可以在根目录下,也可以在子目录里,只要名子叫Resources就可以。比如目录:/xxx/xxx/Resources  和 /Resources 是一样的,无论多少个叫Resources的文件夹都可以。Resources文件夹下的资源不管你用还是不用都会被打包进.apk或者.ipa

Resource.Load :编辑时和运行时都可以通过Resource.Load来直接读取。

Resources.LoadAssetAtPath() :它可以读取Assets目录下的任意文件夹下的资源,它可以在编辑时或者编辑器运行时用,它但是它不能在真机上用,它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。

AssetDatabase.LoadAssetAtPath():它可以读取Assets目录下的任意文件夹下的资源,它只能在编辑时用。它的路径是”Assets/xx/xx.xxx” 必须是这种路径,并且要带文件的后缀名。

我觉得在电脑上开发的时候尽量来用Resource.Load() 或者 Resources.LoadAssetAtPath() ,假如手机上选择一部分资源要打assetbundle,一部分资源Resource.Load().那么在做.apk或者.ipa的时候 现在都是用脚本来自动化打包,在打包之前 可以用AssetDatabase.MoveAsset()把已经打包成assetbundle的原始文件从Resources文件夹下移动出去在打包,这样打出来的运行包就不会包行多余的文件了。打完包以后再把移动出去的文件夹移动回来。

6. StreamingAssets

这个文件夹下的资源也会全都打包在.apk或者.ipa 它和Resources的区别是,Resources会压缩文件,但是它不会压缩原封不动的打包进去。并且它是一个只读的文件夹,就是程序运行时只能读 不能写。它在各个平台下的路径是不同的,不过你可以用Application.streamingAssetsPath 它会根据当前的平台选择对应的路径。

有些游戏为了让所有的资源全部使用assetbundle,会把一些初始的assetbundle放在StreamingAssets目录下,运行程序的时候在把这些assetbundle拷贝在Application.persistentDataPath目录下,如果这些assetbundle有更新的话,那么下载到新的assetbundle在把Application.persistentDataPath目录下原有的覆盖掉。

因为Application.persistentDataPath目录是应用程序的沙盒目录,所以打包之前是没有这个目录的,直到应用程序在手机上安装完毕才有这个目录。

StreamingAssets目录下的资源都是不压缩的,所以它比较大会占空间,比如你的应用装在手机上会占用100M的容量,那么你又在StreamingAssets放了一个100M的assetbundle,那么此时在装在手机上就会在200M的容量。

今天就到这里了,如果有问题欢迎大家与@雨松MOMO一起讨论。嘿嘿。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D脚本18:可视化辅助设置类 Gizmos GizmosGizmos用于场景给出一个可视化的调试或辅助设置。 所有的Gizmos绘制都必须在脚本的OnDrawGizmosOnDrawGizmosSelected函数完成。 OnDrawGizmos在每一帧都被调用。所有在OnDrawGizmos内部渲染的Gizmos都是可见的。 OnDrawGizmosSelected尽在脚本所附加的物体被选时调用。 类变量 ◆ static var color : Color // 描述:设置下次绘制的Gizmos的颜色。 function OnDrawGizmosSelected() { Gizmos.color = Color.red; var direction = transform.TransformDirection(Vector3.forward) * 5; // 在物体的前方绘制一个5米长的线 Gizmos.DrawRay(transform.position, direction); } ◆ static var matrix : Matrix4x4 // 描述:设置用于渲染所有gizmos的矩阵。 类方法 ◆ Static function DrawCube(center:Vector3,size:Vector3):void // 描述:用center和size绘制一个立方体. Function OnDrawGizmosSelected(){ Gizmos.color=Color(1,0,0,5); // 在变换位置处绘制一个变透明的蓝色立方体 Gizmos.DrawCube(transform.position,Vector3(1,1,1)); } ◆ Static function DrawGUITexture(screenRect:Rect,texture:Texture,mat:Material=null):void // 描述:在屏幕坐标下绘制一个纹理。用于GUI背景。 ◆ Static function DrawGUITexture(screenRect:Rect,texture:Texture,leftBorder:int,rightBorder:int,topBorder:int,bottomBorder:int,mat:Material=null):void // 描述:在屏幕坐标下绘制一个纹理。用于GUI背景。 ◆ Static function Drawicon(center:Vector3,name:string):void // 描述:在世界位置center处绘制一个图标.这个图标被命名为name并放置在Assets/Gizmos文件夹Unity.app/Resoutces文件夹.DrawIcon允许你在游戏快速选择重要的物体。 在物体位置处绘制光源灯泡图标.因为我们在OnDrawGizmos函数内部调用它,在场景视图 ,这个图标总是可点选的. function OnDrawGizmos(){ Gizmos DrawIcon(transform.position,”Light Gizmo.tiff”); } ◆ Static function DrawLine(from:Vector3,to:Vector3):void // 描述:绘制一条线从from到to. Var Larget:Transform; function OnDrawGizmosSelected(){ if(target != null) { Gizmos.color = Color.blue; //从transform到target绘制一条蓝色的线 Gizmos.DrawLine(transform.position,target.position); } } ◆ static function DrawRay(r:Ray):void static function DrawRay(from:Vector3,direction:Vector3):void // 描述:绘制一个射线从from开始到from + direction. ◆ function OnDrawGizmosSelected(){ Gizmos.color = Color.red; Direction = transform.TransformDirection(Vector3.forward)*5; Gizmos.DrawRay(transform.positon,direction); } ◆ Static function DrawSphere(center:Vector3,radius:flont):void // 描述:用center和randins绘制一个球体. Function OnDrawGizmosSelected(){ Gizmos.color = Color.yellow; // 在变换位置处绘制一个黄色的球体 Gizmos.DrawSphere(transtorm.position,1); } ◆ Static function DrawWireCube(center:Vector3, size: Vector3):void // 描述:用center和radius绘制一个线框立方体. Function OnDrawGizmosSelected(){ Gizmos.color = Color.yellow; //在变换位置处绘制一个黄色立方体 Gizmos.DrawWireCube (transtorm.position, Vector3(1,1,1)); } ◆ Static function DrawWireSphere(center:Vector3,radius:float):void // 描述:用center和radius绘制一个线框球体. Var explosionRadius = 5.0; Function OnDrawGizmosSelected(){ Gizmos.color = Color.white; //选的时候显示爆炸路劲 Gizmos.DrawSphere(transtorm.position,explpsionRadius); }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值