Babybus-u3d技术交流-影子分享
1、帧率
IOS默认帧率为60..并且规定我们手动控制帧率的时候帧率要是能被60整除的数或者是60的倍数(例: 30,15)。如果不符合上面的要求则控帧无效,默认60.
同时设置帧率的时候要在Quality下的Other—>VSync Count设置为Don't Sync
在全局的脚本Awake()中加入代码:
//****************targetFrameRate为int型(IOS为60的倍数或者被60整除的数,一般设置为30。安卓上没有限制,但是鉴于安卓机子比较low 建议设成35到40)************************//
Application.targetFrameRate = targetFrameRate;
2、协程
开启协程StartCoroutine()
参数有两种形式:
StartCoroutine(string methodName); —— 参数为字符串类型的方法名
StartCoroutine(IEnumerator method); —— 参数为IEnumerator类型的方法
传递字符串的只能传递一个方法参数而使用IEnumerator的没有限制
停止协程StopCoroutine()和StopAllCoroutines()
StopCoroutine() —— 只能停止以字符串为参数的协程
StopAllCoroutines() —— 可以停止两种参数形式的协程
注意:StopCoroutine和StopAllCoroutines只能对应脚本上的协程,不能停止别的脚本内的协程。如果要在A脚本中停止B脚本的协程,要在B脚本中封装一个公共的停止协程方法给A调用
3、防止在UI上射线穿透
在主相机发射线代码之前加上,判断当前是否touch在UI上:
if(UICamera.isOverUI){
return;
}
4、Ray
Ray.origin:射线的起点(和摄像机的位置有关)。
Ray.origin.x:物体位于相机的正前方的时候, Ray.origin.x为0
Ray.origin.y: 物体的高度和相机在同一水平线上的时候, Ray.origin.y为0
Ray.origin.z: 摄像机Z轴的点到(0,0,0)点的距离加上去摄像机进切面的大小
Ray.direction:射线的方向。是一个单位向量(长度为1)。如果你指定一个非单位长度的向量,它将被规范化。
Ray.GetPoint():沿着射线,返回距离单位内的一个点。
5、重力感应
参考下面两篇文章:
[http://bbs.9ria.com/thread-223825-1-1.html
[http://bbs.9ria.com/thread-223831-1-1.html
6、使用Line Renderer组件画星星弹簧
void DrawTanHuang(){
startLightPos = transform.position;
startPoint = fixedPos.position + new Vector3(0.02f,0,0);//固定起始点
endPoint = startLightPos + new Vector3(0.02f,0.06,0);//实时更新结束点
lineRenderer.SetPosition(0,startPoint);//设置起始点
lineRenderer.SetPosition(1,endPoint);//设置结束点
}
通过Spring Joint组件添加弹簧效果..实现星星灯回弹