Unity学习笔记

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

你可能感兴趣的:(Unity3d,游戏开发)