Unity学习笔记

    xiaoxiao2021-03-25  81

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

    转载请注明原文地址: https://ju.6miu.com/read-40736.html

    最新回复(0)