1.世界坐标抽与局部坐标抽
Space.world:世界坐标系 Space.self:局部坐标系 2.人物的移动与旋转 移动:translate 旋转:Rotate Vector.forward上 Vector.back 下 Vector.right 左 Vector.left 右 3.创建地形系统Hierarchy视图-Terrain 4.创建自定义树木Hierarchy视图-Tree 5.创建点光源 Hierarchy视图-Light-Point Light 常用属性:Range:光照范围 Color:颜色 Indensity:光源强度 Culling Mask:是否被Player物体遮挡 √是
2.音频属性
Audio Format:设置音频是否是不压缩方式(Native)还是压缩方式(Compressed) 3D Sound:启用则为3D音效,否则为2D(适合GUI音频) Load Type(音频加载方式):第一种方式:Load into menory加载到内存, 第二种方式:Steam from disc直接从磁盘读取,适合音频较大对速度不敏感的音频播放。 Gapless Looping:无缝循环,只适于Androi与IOS平台, Compression(kbps):音频压缩的比特率,比特率越低,音频质量越差,但是音频文件体积越小。 7.音频监听与音频源组件注意要点 音频监听组件与音频播放组件可以放在同一个游戏对象上,也可以放在不同的游戏对象上。 音频监听组件默认添加在了摄像机上(MainCamera),注意没有被激活的摄像机需要把Audio Listener给关闭。 同一场景中Audio Listener只能有一个起作用。 8.Audio Source属性 Audio Clip:音频剪辑 Mute:静音 Play onAwake:自动播放 Priority:确定场景中所有音频源之间的优先级,(0:最重要 256:最不重要),当资源不足时优先级最低的会被剔除。 Min Distance:在最小距离之内声音会保持影响。 Max Distance:最大距离。
11.3DS-MAX Unity统一单位为“米”
注意:3DSMax 需要修改统一单位, 不然导入的物体过大, 1. 自定义(U) - 单位设置(U) - 系统单位设置 - 系统单位比列 改成 “米” 然后确定 - 完工
14.Time类:
1.deltaTime:以秒计算,完成最后一帧时间 2.time:以秒计算,从游戏开始的时间(只读)。也就是说,从游戏开始到到现在所用的时间 3.timeScale:传递时间的缩放,这可以用于减慢运动效果 0为暂停,1为播放 FixedUpdate所用 4.realtimeSinceStartup:以秒计,自游戏开始的真实时间,不被timeScale所影响。
9.常用触发事件 碰撞事件 OnCollisionEnter(Collision):碰撞开始 OnCollisionExit(Collision):碰撞结束 OnCollisionStay(Collision):碰撞进行中 触发事件 OnTriggerEnter(Collider):触发开始 OnTriggerExit(Collider):触发结束 OnTriggerStay(Collider):触发进行中 注意:如果需要使用OnTrigger()方法,需要将Box Collider组件里面的is Trigger打勾 鼠标事件 OnMouseEnter():鼠标进入 OnMouseExit():鼠标离开 OnMouseDown():鼠标按下[单击] OnMouseOver():鼠标悬浮 OnMouseUp():鼠标按下 OnMouseDrag():鼠标拖移
16.Unity贴图: 注意:贴图尺寸,制作游戏模型时,建议贴图的尺寸为2的n次幂,比如2,4,6,8,16,32,64,128,256,512,1024,2048等 这样是为了让计算机方便计算,因为计算机本身就是2进制。
1.Unity支持多种贴图格式,常用的有PSD,TIFF,TGA等无压缩高质量高分辨率图片格式来制作贴图。 2.贴图属性: 1.>Texture:普通贴图 2.>Normalmap:法线贴图 3.>GUI:贴图 (一般用于UI的贴图选择这种类型) 4.>Cursor:光标贴图 (用于鼠标的光标) 5.>Reflection:反射贴图 (又称为立方体贴图,一般制作反射效果) 6.>Cookie:用于灯光的遮罩贴图 7.>Lightmap:光照贴图 3.Advanced高级设置: 1.NonPower of 2:如果贴图的尺寸不是2的n次幂,需要给他一个缩放的方式. 2.BypasssRGB Sampling:使用贴图的原有色彩,而不进行camera校正,如果的GUI贴图建议开启 3.GenerateMip Maps:生成Minpmap贴图,游戏场景中的贴图建议打开,GUI中的建议关闭。 4.Border Min Maps:防止在较低的Minmap贴图时颜色在贴图边缘溢出,非常适合光照贴图的使用 4.jpg,png等默认没有alpha from Grayscale通道,所以我们需要自己去设置成阿尔法通道 1.立方体贴图 (用于物体的反射) 2.视频贴图 (用于在游戏场景播放视频)
3.渲染贴图 (可以做为监视器或摄像头) 15.四种加载场景的方法: 注意:新版本要引入:UnityEngine.SceneManagement; 1. SceneManager.LoadScene():同步加载 2. SceneManager.LoadSceneAsync():异步加载 3. SceneManager.LoadSceneAddictive():同步附加式加载 4. SceneManager.LoadSceneAddictiveAsync():异步附加式加载 同步加载:与异步加载反之,由于加载场景是同步进行的(也就是在一个线程中), 所以当B场景较大的时候执行此方法会感觉到卡顿。 异步加载:这个与第一种情况基本一样,唯一的区别是加载B的过程是异步的 (也就是加载新场景的行为是在一个后台线程中进行的,不影响主线程的运行), 这样在加载B的时候当前场景A不受影响,可以继续运行,所以即使场景B很大也不会感觉到卡顿 同步附加式加载:假设当前场景是A,我们要加载场景B,unity在加载B的时候不会销毁A, 也就是说加载结束之后A和B将同时存在,这个适合于世界地图比较大的时候, 根据人走到的位置来动态的加载世界地图中的不同部分。当然前提是将世界地图做成多个不同的scene文件。 异步附加式加:这种情况与上一种基本一样,区别仍然在于加载B的过程是在一个后台线程中异步进行的。
10.常用脚本与方法
Unity核心类:MonoBehaviour,GameObject,Transform,Time等 //几秒后调用此方法 只调用1次 1.回调函数: Invoke("方法名",秒数); //几秒后调用此方法 然后间隔几秒无限调用此方法 InvokeRepeating("方法名",调用时间,间隔调用时间); 2.协程(伪多线程):StartCoroutine("Test"); //接收参数:IEnumerator方法 StopCoroutine("Test"); //关闭协程方法 调用方法:IEnumeratorTest(){ Debug.Log("2"); yieId return new WaitForSeconds(float time) //几秒后调用后面的方法 Debug.Log("3"); } 3.sendMessage: 1.>带参数:sendMessage("方法名","参数"); 2.>不带参数:sendMessage("方法名"); 3.>带任意参数:sendMessage("方法名",Object[]);
4.>向下广播:BroadcastMessage("方法名"); //得到自身和子类的同一“方法名”并执行 返回类型:GameObject
5.>向上广播:SendMessageUpwards("方法名"); //得到自身和父类的同一“方法名”并执行 返回类型:GameObject 4.动态添加脚本组件或其他组件: 1.添加组件: AddComponent<组件名>(); //返回类型 gameobject 2.获取组件: GetComponent<组件名>(); //返回类型 gameobject 5.GetComponent<组件名>();可用于游戏对象的数据传递, 思路:定义一个GameObject变量(该变量是需要获得组件的游戏物体)然后用其变量点出【GetComponent<组件名>().变量名】 获得该游戏对象上的组件, 然后在点出该组件的变量名即可得到,得到函数名跟得到变量名是一样的。 6.Find查找游戏对象: 1.根据游戏对象名查找游戏对象: Find(游戏对象名); //返回类型 GameObject 2.根据标签名查找游戏对象: FindWithTag(游戏标签名); //返回类型 GameObject 3.根据标签名获得一组游戏对象: FindGameObjectsTag(游戏标签名); //返回类型 GameObject[]
13.MonoBehavor脚本生命周期: 调用协程方法推荐放在OnEnable()方法里,不推荐放在Start()方法中, Start()只执行一次,所以下一次不会执行。 1.>Reset() //重置组件后或添加组件后调用,只执行一次 2.>Awake() //初始化一些参数,只执行一次 3.>OnEnable() //启用组件后调用,只执行一次 4.>Start() //只执行一次 5.>FixedUpdate() //0.01秒执行一次 6.>Update() //每一帧执行一次1帧=1秒 7.>LateUpdate() //Update之后调用, 8.>OnGUI() //LateUpdate之后调用, 9.>OnDisable() //禁用组件后调用,只执行一次 10.>OnDestroy() //销毁对象调用,只执行一次