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() //销毁对象调用,只执行一次