Unity 小技巧

快捷键

全部展开或者合上某个目录,需要按住alt键。

Tab使用小技巧

每个标签窗口都可以锁定, 当然,锁定之后,点击inspector中的物体就不能够进行定位了。

脚本中的隐藏字符

若在网页或者某处复制代码进脚本,可能会出现隐藏字符误入,表面看没有东西,比如中文全角空格,但是程序会报错,非常隐蔽的错误。

关于public变量与Inpsector中的赋值

Public变量定义后,如果在脚本中修改值,那么运行时可能不会立刻运用此值,而是会根据面板中指定的值来运行,严格注意。最好的方法是直接修改面板中的值。

多开unity 窗口

如何同时运行多个unity3d实例?有时候需要同时打开多个Unity项目,在各项目之间复制东西。以下是同时运行多个Unity实例的技巧:

 

修改快捷方式的属性。在后面加上个 -projectPath,例如:   "D:\ProgramFiles\Unity\Editor\Unity.exe" -projectPath这样的话运行的时候窗口底部会报一个找不到路径的错误,clear一次就行。


Batch

这种static可能影响物体的旋转,比如8个金币,都通过脚本围绕自身旋转,但是加了Batching static之后,就都不动了,需要去掉Batching static

如果需要渲染的物体遍布整个场景,那么不要用batch,会造成渲染负担

Profiler

Unity3d中profiler中的指数,可能会受到inspector等面板的影响,严格注意

Statistics

Unity中的统计窗格,VBOtotal和VRAM计算的是场景中的所有物体,要想单独测试某个建筑,必须把场景中的物体先都删掉,才可以。

Pivot

unity3dpivot坐标不在物体上,飞出很远。需要在3dmax里面,先导入模型,然后将轴居中到对象,然后移动对象到0,0,0.即可。

Project

unityproject中的fbx千万不能删,prefab的引用都在它上面,删了之后下次启动的时候就找不到mesh了,大忌。

发布

unity3d中,project中,尽量删掉没用的文件,然后发布,可以减小包的大小,因为有可能有些无用的文件包含在里面。

LOD

LODGroup:只有当LODbias设置为1的时候,lod的滑动条才能准确。设置在Quality 里面。设置为其他值的作用有待研究,估测类似于平滑或者缓冲。

Mono调试

mono里面断点调试,需要打开这个。

Mono中代码格式的设置需要在这里面设置,可以效果立刻出现。若是在windows里面的option设置,属于全局设置,在新工程中才能看见效果。


Console
unity中,console中会隐藏重复的输出内容(当点了collapse之后)

DXT格式压缩:

Android上有时候似乎不支持DXT格式压缩。

法线贴图& Specular:

Unity中凹凸贴图(Normalmap),只有在有light的情况下才会有效果。切记。

而且有时候在vertexlit的摄像机模式下,normalmap没有效果,Specular系列的shader也会如此

画球球小代码:

// Draw ayellowsphere in scene view at distance

// unitsalongcamera's viewing direction.

var distance :float = -1.0;

functionOnDrawGizmosSelected () {

var m :Matrix4x4 = camera.cameraToWorldMatrix;

var p : Vector3= m.MultiplyPoint (Vector3(0,0,distance));

    Gizmos.color = Color.yellow;

    Gizmos.DrawSphere (p, 0.2);

}

TextureClip:

    U3d里面的贴图不能识别max中的剪裁,所以有剪裁的图最好是重新ps一张,然后再u3d里面操作。

中文支持:

Unity3d中文支持很差,导入导出不要有中文路径

版本兼容:

    Unity3d 高版本打开低版本的时候,有时报错,如下,此时可以新建一个project,然后把里面的所有内容替换成老版本里面的内容(temp文件可以保留),然后再打开这个project就可以了。


贴图设置:

    Unity中的贴图可以进行设置,点击贴图,inspector中可以设置。贴图设置好了才会清晰。

    U3d中可以将一张贴图本身当做烘焙图用,在legacy里面lightmap中的diffuse设置两个一样的贴图。

ImportSetting:

Unity3d中,导入的FBX文件,里面的坐标可能不正确,如下图成了垂直的mesh,解决方案:重新建立一个prefab,将模型文件和mesh都拖进去,就好了。


关于子prefab的生成,可以在Hierachy里面弄好之后,拖到project里面,就有子了。

Android 上看Profiler:

    Unity中,要想在手机上跑程序,然后在电脑上看profiler:adb forward tcp:54999 localabstract:Unity-com.yyy.yyy

    cmd中输入adb命令不识别的时候,要进行环境变量的设置,在path中将adb.exe所在的目录添加,最后的\不能省略。




Unity & Android 集成调试

android调试Unity3D开发:

可以通过日志打印(logcat)来跟踪。

在AndroidSDK中有个adb工具,使用此工具来跟踪运行的android应用:

adb logcat 

启动logcat,并将设备上运行的Android应用的运行时信息全部打印出来。

adb logcat -s Unity

如果只想打印Unity的输出信息,使用此命令。

adb logcat -d > logcat.txt 

将打印信息输出为文件。

当然,更直接的做法是在应用中集成自己的调试信息窗口,将如下代码关联到一个gameobject:

using UnityEngine;  

usingSystem.Collections;

 

</p><p>public class GuiTextDebug:MonoBehaviour  

 privatefloatwindowPosition = -440.0f; 

 privateintpositionCheck = 2; 

 privatestaticstring windowText = ""; 

 privateVector2 scrollViewVector =Vector2.zero;

 privateGUIStyle debugBoxStyle; 

 privatefloatleftSide = 0.0f; 

 privatefloatdebugWidth = 420.0f;

 publicbooldebugIsOn = false;

 publicstaticvoid debug(string newString)  

 {  

 windowText =newString + "\n" + windowText;   

 UnityEngine.Debug.Log(newString); 

 }  

 voidStart() 

 

   {  

 debugBoxStyle= new GUIStyle(); 

 debugBoxStyle.alignment =TextAnchor.UpperLeft; 

 leftSide =120; 

 }

 voidOnGUI()   

   {  

 if(debugIsOn)   

       { 

  GUI.depth =0;   

 GUI.BeginGroup(new Rect(windowPosition, 40.0f, leftSide, 200.0f));  

  scrollViewVector= GUI.BeginScrollView(new Rect (0, 0.0f, debugWidth,200.0f), 

                                                 scrollViewVector,

                                                  new Rect (0.0f, 0.0f,400.0f, 2000.0f)); 

  GUI.Box(newRect(0, 0.0f, debugWidth - 20.0f, 2000.0f), windowText,debugBoxStyle);

 GUI.EndScrollView(); 

  GUI.EndGroup();  

  if(GUI.Button(new Rect(leftSide, 0.0f,75.0f,40.0f), "调试")) 

          { 

   if(positionCheck == 1)  

              {  

   windowPosition = -440.0f; 

   positionCheck = 2; 

   }

  else  

              {

   windowPosition = leftSide; 

    positionCheck = 1; 

   }

 

  }

 

  if(GUI.Button(new Rect(leftSide + 80f,0.0f,75.0f,40.0f),"清除")) 

           {

    windowText= "";  

  }

 

  }

 

 }

 

}

 

U3d高模贴图烘到低模上,如果出现纹理不清晰,可以调高贴图的对比度,再进行烘焙,然后再贴到低模。

adb forward tcp:54999 localabstract:Unity-com.zz.zz





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值