学习游戏开发--细节笔记(持续更新)

1.Animation.CrossFace();这个方法播放动画会更流畅。

2.遇到人物行走过程模型升高的问题可以模拟一个重力让Y一直--

3.tranform.lookat()方法可以用transform.rotation=Quaternion.slerp(transform.rotation,Quaternion.lookrotation())
4.伤害机制一般采用SendMessage()的来传递受伤的方法
5.vector3.dot(向量1,向量2)计算夹角。返回值是-1--1之间。
6.集合不用的话记得清空。
7.如果发现动画不流畅或者键盘响应慢,又可能是某一种动画状态占用太多内存,写一个unityhelp类来帮助计时,间隔0.2秒执行一次,不要一秒执行60帧。
8.在游戏开发过程中一定要少写重复代码,多写集成方法,记得用单例模式。避免滥用。
9.使用协程代替Update方法时要记得加while循环while(true),并且yield return一定要放进协程里面。
10.在计算伤害时记得将伤害做一下绝对值处理。mathf.Abs(数据)。
11.等级数值等最好用XML文件方便以后修改。
12.新建UI一般要新建UI摄像机来单独渲染,修改相机参数,修改UI渲染,多建Panel。
13.控制显示面板的出现-和隐藏可以gameobject.setattive(!gameobject.acttive)
14.做按钮的持续按键检测把按钮修改为animation的然后在状态机里的按钮pressed添加脚本
15.animator在按钮这里是可以复用的
16.在烘焙之前lightmap static和 preserve UVs要勾选上渲染更加真实。

17.全局坐标系和局部坐标系转换:    ·           

Transform.TransformPoint(Vector3 position) :将一个坐标点从局部坐标系转换到全局坐标系。
Transform.InverseTransformPoint(Vector3 position):将坐标点从全局坐标系转换到局部坐标系
Transform.TransformDirection(Vector3 direction):将一个方向从局部坐标系转换到全局坐标系。
Transform.InverseTransformDirection(Vector3 direction):将一个方向从全局坐标系转换到局部坐标系。
Transform.TransformVector(Vector3 vector):将一个向量从局部坐标系转换到全局坐标系。

Transform.InverseTransformVector(Vector3 vector):将一个向量从全局坐标系转换到局部坐标系。

18.屏幕坐标系与全局坐标系转换:
Camera.ScreenToWorldPoint(Vector3 position): 将屏幕坐标转换为全局坐标。
Camera.WorldToScreenPoint(Vector3 position):将全局坐标转换为屏幕坐标。
Input.mousePosition:获得鼠标在屏幕坐标系中的坐标。

19.屏幕坐标系与视口坐标系转换:
Camera.ScreenToViewportPoint(Vector3 position):将屏幕坐标转换为视口坐标。
Camera.ViewportToScreenPoint(Vector3 position):将视口坐标转换为屏幕坐标。

20.全局坐标系与视口坐标系转换:
Camera.WorldToViewportPoint(Vector3 position):将全局坐标转换为视口坐标。

Camera.ViewportToWorldPoint(Vector3 position):将视口坐标转换为全局坐标。

20.在Unity中,可以使用Vector3.Normalize来归一化向量。使用Vector3.normalized来获得归一化后的单位向量。

21.点积的计算公式为a·b=(ax,ay)·(bx,by)=axbx+ayby
在Unity中,向量的点积可以通过Vector3.Dot来计算。
可以使用Vector3.Angle来获得两个向量之间的夹角的大小。结果在0度到180度之间。

叉积的计算公式为:a×b=(ax,ay,az)×(bx,by,bz)=(aybz-azby,azbx-axbz,axby-aybx)

22.在Unity中,可以使用Matrix4x4.SetRow和Matrix4x4.SetColumn来设置一个4×4矩阵的某行或某列。
在Unity中,可以使用Matrix4x4.GetRow和Matrix4x4.GetColumn来获取一个4×4矩阵的某行或某列。结果为Vector4类型。

这里的index是从0开始。

23.CanvasGroup.DOFade(数值,时间)可以将panal的透明度渐变。

24.利用Undo进行的删除操作是可以撤销的。

25.IK动画可以让手脚自动匹配到指定的位置 anim.SetIKPosition();可以在运行中设置位置,然后COPY位置粘贴就行了。

用Timeline做过场动画。

26.unity在做性能优化的时候可以用LOD Group 组件来控制高模和低模的显示。可用遮挡剔除OcclusionCulling 的方式来让在相机视野范围内的物体就渲染,不在的就不渲染。当场景中光源较多的时候可以使用光照贴图Lightmapping来进行烘焙然后把光源去掉。还可以用代码合并Mesh来节省性能。还有资源池Object Pool技术。

27.关于代码的执行顺序导致的空指针问题,可以用协程来解决,或者是调整代码的执行顺序。

28.Mathf.RoundToInt()可以把一个float类型的变量转换成最近的int的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值