说明:
目前已经参与制作了两个unity游戏项目,但是两次项目制作方法却很不一样,所以想了解一下官方是怎么样的制作方法。
1.FixedUpdate()
官方说明:FixedUpdate should be used instead of Update when dealing with Rigidbody。For example when adding a force to a rigidbody, you have to apply the force every fixed frame inside FixedUpdate instead of every frame inside Update.
2.public GameObject go拖拽到引用,不建议这样做,容易丢失引用
获取某个游戏对象的引用方法:
1.常用transform.Find(),不限
2.GameObject.Find(),只能获取active = true的物体
3.FindWihTag()
3.Rigibody设置
注意的选项:isTrigger是(触发的OnTriggerEnter()),use gravity否
遇到过的问题:use gravity是的时候,会让物体一直向下移动(容易被忽略,移动很小)
4.MeshCollider
IsTrigger是,Convex是(否时会报错),Mesh 模型的mesh拖拽到这里
5.功能的实现尽可能分成各个脚本文件
不要实现在一个文件里,方便复用组合,不要怕脚本创建太多
6.背景图片滚动的shader实现
关键代码:
_Speed("Speed",Range(0,1)) = 0.1
.
half _Speed;
.
void surf (Input IN, inout SurfaceOutputStandard o) {
.
IN.uv_MainTex.y += _Time.y*_Speed;
.
.
.
}
7.游戏程序功能的设计思想
unity采用的是组件的设计思想,需要什么功能挂载什么脚本,将各个功能分散在各个脚本里实现。
所以游戏里分析各个物体需要什么功能,该分散在哪些脚本里实现,哪些功能是物体共有的,哪些功能是物体特有的,哪些物体挂在什么脚本,哪些功能没必要分开实现,都需要考量。如果程序功能设计的好,游戏做起来会特别容易。
游戏里的物体就像现实中的物体,这和对象的设计思想是一致的,物体都有自己的多个属性,有改变自己属性的方法(所谓的功能)。
当分不清两个物体的关系和功能实现划分时候,我都会思考现实中两个物体的关系该是什么样子的。