Unity3D知识点

世界空间(World):整个虚拟世界的3d空间,在Unity3d中以米做为单位,如长100米宽100米高100米的立体空间。android

屏幕空间(Screen):屏幕2d空间,大小就是屏幕的大小,以像素做为单位,能够设定屏幕大小,0点在左上角,向右为x正向,向下为y正向。多线程

视口空间(Viewport):摄像机的显示范围空间,x介于0-1,y介于0-1的2d空间,0点在左下脚,(1,1)点在右上角。世界空间坐标经常须要转换到视口空间,而后转换到屏幕空间。app

 

Unity3D的坑:在C#脚本中建立了枚举类型后,若是你已经在物体的脚本上指定了不一样的枚举类型,此时你打乱枚举类型中变量次序,或者把新建类型放在最前面,那么你以前指定的类型所有乱了,必须恢复顺序。编辑器

 

Application.LoadLevel,该函数在加载关卡时不会重置已存在的静态变量的值,须要手动重置ide

Destroy,使用这个销毁对象的函数时,注意参数不是"类的对象",应该是"对象名.GameObject",不然场景中物体不会消失函数

DontDestroyOnLoad(GameObject obj),这个函数最好放在静态构造函数中,这样就只会执行一次;或者loading界面执行;或者用代码来建立物体并挂载脚本。性能

WorldToScreenPoint,使用这个函数能够进行场景3D与屏幕2D的坐标转换,相反的是camera.screenToWorldPointui

StartCoroutine,用于启动一个协程,与主线程一块儿执行,貌似多线程,其实是CPU分时的单线程,性能不是太好。可是,它有时用起来很方便,至关于在Update里启动一个计时器函数,能够防止界面卡死。spa

Input.GetKey(KeyCode.LeftShift) && Input.GetKey(KeyCode.W),同时按下多个键 ,经常使用于实现人物奔跑效果插件

GetKey:按键按下期间返回true

GetKeyDown:按键按下的第一帧返回true

GetKeyUp:按键松开的第一帧返回true

GetAxis("Horizontal")和GetAxis("Vertical"):用方向键或WSAD来模拟-1到1的平滑输入

退格键:backspace;回车键:return;退出键:esc;后面是按键名,例如, Input.GetKey("up"), Input.GetKey("esc")

 

Unity3D使用GUI或者GUILayout时,若是用代码动态建立对象,可能会出现画面闪烁问题。我一般的解决办法是,看看哪些变量在其中被改变了,找到它们,尽可能不要改变便可。

GuiText始终会被放置在顶层,若是你不想这样显示,但又须要程序文字,建议使用3DText,把scale调小,把font size调大便可。 

 

若是须要NGUI支持Android电视的空鼠,能够打开UICamera脚本,找到Awake函数, 把useMouse改成true,useTouch改成false

Android盒子遥控器按键:

Up Arrow          KeyCode.UpArrow
Down Arrow      KeyCode.DownArrow
Left Arrow         KeyCode.LeftArrow
Right Arrow       KeyCode.DownArrow
Center Button    KeyCode.JoystickButton0
Back button       KeyCode.Escape
Menu Button      KeyCode.Menu

 

Unity3D中要想脚本中变量在编辑器中显示,须要知足如下要求:变量必须被public修饰,不能使用[HideInInspector]修饰,变量的类型必须继承自MonoBehaviour。若是想把某个脚本挂在GameObject上,该脚本必须继承自MonoBehaviour,不然根本看不到该脚本。

 

Unity3D Asset Store 下载的文件保存位置 C:\Users\sh\AppData\Roaming\Unity\Asset Store。

 

Unity3D对C#仅提供有限的支持,在Player Settings中能够看到目前为.Net 2.0 Subset。因此在编写C#脚本时,可能没法对某些C#特性提供支持,出现一些奇怪的现象。好比没法修改单实例对象,经常须要把变量改成static类型才能够修改为功。

 

使用Android插件与外置硬件设备交互时,我遇到过数据读取的错误,这里可能须要对AndroidManifest.xml配置文件作以下修改:

<meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="true" />

 

若是在Unity中使用了Android插件,那么须要修改AndroidManifest.xml文件,主要改package和activity中的name,例如android:name=".MainActivity"。

 

在使用UnityPlayer.UnitySendMessage("gameobject", "functionname", result)这个函数时,有一点须要注意:第三个参数result中不能包含特殊字符,不然整个字符串传递到Unity游戏中都会为空。好比,在Android开发中,我先把"00"这个16进制字符串转换为了char字符,而后append到了一个StringBuilder字符串中,最后传递这个字符串到Unity中,收到的值老是为空,且不管原来这个字符串是什么。

相关文章
相关标签/搜索