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

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

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

Unity3D的坑:在C#脚本中创建了枚举类型后,如果你已经在物体的脚本上指定了不同的枚举类型,此时你打乱枚举类型中变量次序,或者把新建类型放在最前面,那么你之前指定的类型全部乱了,必须恢复顺序。

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

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

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

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

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

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中,收到的值总是为空,且无论原来这个字符串是什么。

最新文章

  1. iOS直播点赞动画,iOS直播心型点赞动画
  2. HTML5和CSS3基础教程(第8版)-读书笔记
  3. sql like 时间
  4. Hadoop的分布模式安装
  5. Qt5.4静态编译方法
  6. std::map的insert和下标[]访问
  7. 论JSON的重要性☞异步上传过程中data取多组值的方法
  8. ExceL转PDF
  9. pod trunk push --verbose 失败的原因总结
  10. Git命令(1)
  11. ServiceFabric极简文档-0. ServiceFabric简介
  12. 【English】十、&quot;谓语的地方&quot;看到有两个动词:I go say hello.、非谓语形式
  13. Exp2 后门原理与实践 20164320 王浩
  14. 如何使用Action.Invoke()触发一个Storyboard
  15. PHP 生成验证码(+图片没有显示的解决办法)
  16. InterruptedException 异常
  17. poj2230 Watchcow【欧拉回路】【输出路径】(遍历所有边的两个方向)
  18. 值类型之间的相互转化,运算符,if条件判断,循环,函数
  19. ef延迟加载不到导航属性问题
  20. centOS7设置静态ip后无法上网的解决,【亲可测】

热门文章

  1. C++中怎么获取类的成员函数的函数指针?
  2. 1988-B. 有序集合
  3. HDU4602+推导公式
  4. java内存模型分析2
  5. MVC 的HTTP请求
  6. Android 签名(3)已签名的apk中的文件
  7. poj1026Cipher(置换群)
  8. bzoj1821: [JSOI2010]Group 部落划分 Group
  9. 使用Unity3D自带动画系统制作下雨效果
  10. 自定义一个compass可编译的目录结构