unity学习_unity学习路线 - CSDN
  • Unity3d菜鸟入门的学习路线--笔记1

    万次阅读 2018-05-23 16:17:39
    最近刚刚开始接触unity3d,因此想把自己的学习路线记录下来,方便自己以后总结。由于毕业论文的关系,需要使用Unity3D开发,做虚拟现实的应用,使用的设备是HTC vive pro产品。初始学习,由于没有基础,因此一团乱,...

    最近刚刚开始接触unity3d,因此想把自己的学习路线记录下来,方便自己以后总结。

    由于毕业论文的关系,需要使用Unity3D开发,做虚拟现实的应用,使用的设备是HTC vive pro产品。

    初始学习,由于没有基础,因此一团乱,总结一下目前看过的教程和书籍。

    1、开始看的是b站上极客学院讲解的unity3d的入门课程,对操作的界面有了初步的了解,不需要看完,看到编程之前就可以。

    2、由于需要使用C#编程,因此需要一点C#的基础,看的是siki学院老师上传到百度云的视频资料,讲解的十分基础,适合我这种还没写过代码的小白。

    3、在有了一定的编程基础以后,就需要对Unity里的API接口有一定的了解,看的是SIKI学院的API入门教程,老师把一些基础的接口都进行了总结和讲解,免费的

    4、官网有较为详细的教程,siki学院没有讲解过的知识,而且自己需要的通过官方的教程进行了进一步的了解。

    5、并不是做广告,自己在图书馆找了很多的关于VR的书,感觉适合自己的是《HTC vive VR 游戏开发实战》,根据里边的例子做一下,可以有很好的提升,前边提到的siki学院就是通过这本书了解到的。

    6、对于自己想知道的模块,Unity的官方文档有很详细的介绍。但是如果没有老师带领入门的话,初始还是很难看懂的,因此需要前边的铺垫。注意的是:如果自己的英语水平还是可以的话,最好是看英文的介绍文档,不懂的用有道词典查一下,这样做的好处是看Unity软件的时候更加的方便,毕竟软件目前还是英文的,自己写代码也是用英文的,看翻译过来的就不太方便转换思维。

    总结,通过以上的尝试,有了一个对软件的基础的了解,接下来便是根据自己的项目进行进一步的针对性的尝试,后续会进行持续的记录。

    展开全文
  • unity学习路线

    千次阅读 2018-09-03 20:03:09
    一、C#知识概括 1、基础(由简单到复杂) 变量、数据类型、if for循环控制语句、数组、运算符、命名规范 2、进阶 命名空间、类、实例化、方法、参数传递、属性、构造器、索引器、正则表达式、常用关键字 ...

    一、C#知识概括

    1、基础(由简单到复杂)

    变量、数据类型、if for循环控制语句、数组、运算符、命名规范    
    

    2、进阶

    命名空间、类、实例化、方法、参数传递、属性、构造器、索引器、正则表达式、常用关键字
    
    异常处理try catch块、枚举、结构、委托、事件、接口、继承
    

    3、我还不会 (啊呸)

    面向对象(多态、封装、继承?)、反射、多线程、网络、等然后不会
    

    二、Unity知识概括

    1、基础
    Unity安装注册(配置环境)、界面熟悉、创建基本3D物体、浏览Asset Store

    了解熟悉组件(不要求会用,有大概思路)、创建基本3D物体(cube、sphere)、写简单脚本实现功能(如移动)、了解Unity类及方法(下载U3d圣典,没事翻着看,啊呸)
    Unity设置(更改编译器、玩家设置、导出等会基本)
    

    2、进阶
    UGUI、NGUI界面制作

    Camera摄像机、Skybox天空盒、导出到入Unity自带资源、light光源、Material材质、Mesh网格、
    
    地形工具、Physics物理系统(2d)、Audiosoure音频系统、particle粒子系统、PlayerPrefs储存本地数据、Character Controller人称控制器、Wind Zone风域
    

    3、难点

    、Animation动画、状态机(human/Avatar)、Navigation导航系统、Layout布局、Event系统
    
    对象池、设计模式、计算机图形学、Shader、
    
    展开全文
  • Unity学习笔记(一)

    千次阅读 2018-07-08 15:31:13
    啊啊啊啊啊,最近考试唉,下周每天都考试,然后因为要参加腾讯的游戏的项目,8月初要交项目,好不容易把团队组起来,各种跑路的人唉,没办法还是想检查下去,就这两种学了下C#和unity,把之前学的东西总结一下。...

    吐槽

    啊啊啊啊啊,最近考试唉,下周每天都考试,然后因为要参加腾讯的游戏的项目,8月初要交项目,好不容易把团队组起来,各种跑路的人唉,没办法还是想坚持下去,就这两种学了下C#和unity,把之前学的东西总结一下。

    成果

    就在网上看别人的课程入门写了两个小Demo

    这里写图片描述
    这里写图片描述
    第一个就是打砖块,发射小球然后打击墙面
    第二个就是类似微信小程序的见缝插针
    都是看网上别人教程写的,不过基本的Unity自己算是入门了

    知识点总结

    1工程文件夹

    先创建工程,类似和安卓差不多
    Assets:资源,代码,脚本
    Library:库,内置的脚本
    ProjectSetting:工程设定
    Temp:临时的文件夹

    2窗口

    Scene窗口 游戏的场景界面
    Game窗口 游戏界面
    Project窗口 Assets文件夹里面对应的
    Hierarchy窗口 场景里面有那些物体
    Inspector属性面板

    3游戏分常见开发的,就像拍摄视频一样,设置剧本,每一个场景,问题,都是由自己决定。

    4操作视野

    Q W E R T 快捷键

    5游戏物体组成部分

    场景是由游戏物体组成———物体由组件组成的
    组件:就是物体的各种属性,自己写的脚本
    Transform:位置,旋转,放大信息的
    cube:
    Box Collider:
    Mesh Renderer:控制显示

    6创建预治体====类似于模板这种东西

    然后根据预制体的性质创建相应的东西

    7相机的移动

            loat h = Input.GetAxis("Horizontal");//相机的左右的值
            float v = Input.GetAxis("Vertical");//相机的上下移动的值
            Debug.Log(h);
            transform.Translate(new Vector3(h, v, 0)*Time.deltaTime*speed);//相机的镜头的移动
    

    8发射的脚本

    public class Shoot : MonoBehaviour {
        public GameObject bullet;//游戏中的绑定的物体
        public float speed = 35;//初数度
           // Use this for initialization
           void Start () {
            Debug.Log("hhhhhh");
            //GameObject.Instantiate(bullet,transform.position,transform.rotation);
           }
    
           // Update is called once per frame
           void Update () {
            //按下鼠标左键就弹出子弹
            if (Input.GetMouseButtonDown(0))//判断鼠标按键的
            {
                GameObject b = GameObject.Instantiate(bullet, transform.position, transform.rotation);
                Rigidbody rgb = b.GetComponent<Rigidbody>();//获得刚体
                rgb.velocity = transform.forward * speed;
            }
    
           }
    }
    

    9unity获取Camera类型的主对象

    Camera mainCamera;
    GameObject gameObject=GameObject.Find("MainCamera");
    mainCamera=gameObject.GetComponent<Camera>();
    

    10unity的事件方法//类似安卓活动的生命周期

    Awake ->OnEable-> Start -> FixedUpdate-> Update -> LateUpdate ->OnGUI ->OnDisable ->OnDestroy
    1.Awake
    用于在游戏开始之前初始化变量或游戏状态。在脚本整个生命周期内它仅被调用一次.Awake在所有对象被初始化之后调用,所以你可以安全的与其他对象对话或用诸如GameObject.FindWithTag()这样的函数搜索它们。每个游戏物体上的Awake以随机的顺序被调用。因此,你应该用Awake来设置脚本间的引用,并用Start来传递信息Awake总是在Start之前被调用。它不能用来执行协同程序。
    2.Start
    仅在Update函数第一次被调用前调用。Start在behaviour的生命周期中只被调用一次。它和Awake的不同是Start只在脚本实例被启用时调用。你可以按需调整延迟初始化代码。Awake总是在Start之前执行。这允许你协调初始化顺序。在所有脚本实例中,Start函数总是在Awake函数之后调用。
    3.FixedUpdate
    固定帧更新,在Unity导航菜单栏中,点击“Edit”–>“Project Setting”–>“Time”菜单项后,右侧的Inspector视图将弹出时间管理器,其中“Fixed Timestep”选项用于设置FixedUpdate()的更新频率,更新频率默认为0.02s。
    4.Update
    正常帧更新,用于更新逻辑。每一帧都执行,处理Rigidbody时,需要用FixedUpdate代替Update。例如:给刚体加一个作用力时,你必须应用作用力在FixedUpdate里的固定帧,而不是Update中的帧。(两者帧长不同)FixedUpdate,每固定帧绘制时执行一次,和update不同的是FixedUpdate是渲染帧执行,如果你的渲染效率低下的时候FixedUpdate调用次数就会跟着下降。FixedUpdate比较适用于物理引擎的计算,因为是跟每帧渲染有关。Update就比较适合做控制。
    Update()与FixedUpdate()的区别
    从字面上理解,它们都是在更新时会被调用,并且会循环的调用。但是Update会在每次渲 染新的一帧时,被调用。而FixedUpdate会在每个固定的时间间隔被调用,那么要是Update 和FixedUpdate的时间间隔一样,是不是就一样呢?答案是不一定,因为Update受当前渲染的物体,更确切的说是三角形的数量影响,有时快有时 慢,帧率会变化,update被调用的时间间隔就发生变化。但是FixedUpdate则不受帧率的变化,它是以固定的时间间隔来被调用,那么这个时间间 隔怎么设置呢?Edit->Project Setting->time下面的Fixed timestep。
    5.LateUpdate
    在所有Update函数调用后被调用,和fixedupdate一样都是每一帧都被调用执行,这可用于调整脚本执行顺序。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现。LateUpdate,在每帧Update执行完毕调用,他是在所有update结束后才调用,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有update操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
    Update和LateUpdate的区别
    在圣典里LateUpdate被解释成一句话,LateUpdate是在所有Update函数调用后被调用。这可用于调整脚本执行顺序。例如:当物体在Update里移动时,跟随物体的相机可以在LateUpdate里实现。
    LateUpdate是晚于所有Update执行的。例如:游戏中有2个脚本,脚本1含有Update和LateUpdate,脚本2含有Update,那么当游戏执行时,每一帧都是把2个脚本中的Update执行完后才执行LateUpdate 。虽然是在同一帧中执行的,但是Update会先执行,LateUpdate会晚执行。
    现在假设有2个不同的脚本同时在Update中控制一个物体,那么当其中一个脚本改变物体方位、旋转或者其他参数时,另一个脚步也在改变这些东西,那么这个物体的方位、旋转就会出现一定的反复。如果还有个物体在Update中跟随这个物体移动、旋转的话,那跟随的物体就会出现抖动。 如果是在LateUpdate中跟随的话就会只跟随所有Update执行完后的最后位置、旋转,这样就防止了抖动。
    6.OnGUI
    在渲染和处理GUI事件时调用。比如:你画一个button或label时常常用到它。这意味着OnGUI也是每帧执行一次。
    7.Reset
    在用户点击检视面板的Reset按钮或者首次添加该组件时被调用。此函数只在编辑模式下被调用。Reset最常用于在检视面板中给定一个默认值。
    8.OnDisable
    当物体被销毁时 OnDisable将被调用,并且可用于任意清理代码。脚本被卸载时,OnDisable将被调用,OnEnable在脚本被载入后调用。注意: OnDisable不能用于协同程序。
    9.OnDestroy
    当MonoBehaviour将被销毁时,这个函数被调用。OnDestroy只会在预先已经被激活的游戏物体上被调用。注意:OnDestroy也不能用于协同程序。

    void Awake()

    {
    
        print("Here is Awake");
    
    }
    
    
    
    
    
    void OnEnable()
    
    {
    
        print("Here is OnEnable");
    
    }
    
    
    
    
    
    void Start()
    
    {
    
        print("Here is Start");
    
    }
    
    
    
    
    
    void FixedUpdate()
    
    {
    
        print("Here is FixedUpdate");
    
    }
    
    
    
    
    
    void Update()
    
    {
    
        print("Here is Update");
    
    }
    
    
    
    
    
    void LateUpdate()
    
    {
    
        Debug.Log("Here is LateUpdate");
    
    }
    
    
    
    
    
    void OnGUI()
    
    {
    
        print("Here is OnGUI");
    
    }
    
    
    
    
    
    void Reset()
    
    {
    
        print("Here is OnReset");
    
    }
    
    
    
    
    
    void OnDisable()
    
    {
    
        print("Here is OnDisable");
    
    }
    
    
    
    
    
    void OnDestroy()
    
    {
    
        print("Here is OnDestroy");
    
    }  
    

    这里写图片描述
    这里写图片描述
    这里写图片描述

    编辑器(Editor)
    Reset:Reset函数被调用来初始化脚本属性当脚本第一次被附到对象上,并且在Reset命令被使用时也会调用。
    编者注:Reset是在用户点击Inspector面板上Reset按钮或者首次添加该组件时被调用。Reset最常用于在见识面板中给定一个默认值。

    第一次场景加载(First Scene Load)
    这些函数会在一个场景开始(场景中每个物体只调用一次)时被调用。
    Awake:这个函数总是在任何Start()函数之前一个预设被实例化之后被调用,如果一个GameObject是非激活的(inactive),在启动期间Awake函数是不会被调用的直到它是活动的(active)。
    OnEnable:只有在对象是激活(active)状态下才会被调用,这个函数只有在object被启用(enable)后才会调用。这会发生在一个MonoBehaviour实例被创建,例如当一个关卡被加载或者一个带有脚本组件的GameObject被实例化。
    注意:当一个场景被添加到场景中,所有脚本上的Awake()和OnEable()函数将会被调用在Start()、Update()等它们中任何函数被调用之前。自然的,当一个物体在游戏过程中被实例化时这不能被强制执行。

    第一帧更新之前(Before the first frame update)
    Start:只要脚本实例被启用了Start()函数将会在Update()函数第一帧之前被调用。
    对于那些被添加到场景中的物体,所有脚本上的Start()函数将会在它们中任何的Update()函数之前被调用,自然的,当一个物体在游戏过程中被实例化时这不能被强制执行。
    在帧之间(In between frames)
    OnApplicationPause:这个函数将会被调用在暂停被检测有效的在正常的帧更新之间的一帧的结束时。在OnApplicationPause被调用后将会有额外的一帧用来允许游戏显示显示图像表示在暂停状态下。

    更新顺序(Update Order)
    当你在跟踪游戏逻辑和状态,动画,相机位置等的时候,有几个不同的事件函数你可以使用。常见的模式是在Update()函数中执行大多数任务,但是也有其它的函数你可以使用。
    FixedUpdate:FixedUpdate函数经常会比Update函数更频繁的被调用。它一帧会被调用多次,如果帧率低它可能不会在帧之间被调用,就算帧率是高的。所有的图形计算和更新在FixedUpdate之后会立即执行。当在FixedUpdate里执行移动计算,你并不需要Time.deltaTime乘以你的值,这是因为FixedUpdate是按真实时间,独立于帧率被调用的。
    Update:Update每一帧都会被调用,对于帧更新它是主要的负荷函数。
    LateUpdate:LateUpdate会在Update结束之后每一帧被调用,任何计算在Update里执行结束当LateUpdate开始时。LateUpdate常用为第三人称视角相机跟随。

    渲染(Rendering)
    OnPreCull:在相机剔除场景前被调用。剔除是取决于哪些物体对于摄像机是可见的,OnPreCull仅在剔除起作用之前被调用。
    OnBecameVisible/OnBecameInvisible:当一个物体对任意摄像机变得可见/不可见时被调用。
    OnPreRender:在摄像机开始渲染场景之前调用。
    OnRenderObject:在指定场景渲染完成之后调用,你可以使用GL类或者Graphics.DrawMeshNow 来绘制自定义几何体在这里。
    OnPostRender:在摄像机完成场景渲染之后调用。
    OnRenderImage(Pro Only):在场景徐然完成之后允许屏幕图像后期处理调用。
    OnGUI:为了响应GUI事件,每帧会被调用多次(一般最低两次)。布局Layout和Repaint事件会首先处理,接下来处理的是是通过
    Layout和键盘/鼠标事件对应的每个输入事件。
    OnDrawGizmos:用于可视化的绘制一些小玩意在场景视图中。

    协同程序(Coroutines)
    正常的协同程序更新是在Update函数返回之后运行。一个协同程序是可以暂停执行(yield)直到给出的依从指令(YieldInstruction )完成,写成的不同运用:
    yield:在所有的Update函数都已经被调用的下一帧该协程将持续执行。
    yield WaitForSeconds:一段指定的时间延迟之后继续执行,在所有的Update函数完成调用的那一帧之后。
    yield WaitForFixedUpdate:所有脚本上的FixedUpdate函数已经执行调用之后持续。
    yield WWW:在WWW下载完成之后持续。
    yield StartCoroutine:协同程序链,将会等到MuFunc函数协程执行完成首先。

    销毁(When the Object is Destroyed)
    OnDestory:这个函数在会在一个对象销毁前一帧调用,会在所有帧更新一个对象存在的最后一帧之后执行,对象也许会响应Object.Destroy 或一个场景关闭时被销毁。

    退出游戏(When Quitting)
    这些函数会在你场景中所有的激活的物体上调用:
    OnApplicationQuit:这个函数在应用退出之前的所有游戏物体上调用,在编辑器(Editor)模式中会在用户停止PlayMode时调用,在网页播放器(web player)中会在网页视图关闭时调用。
    OnDisable:当行为变为非启用(disable)或非激活(inactive)时调用。

    11时间类的静态变量

    这里写图片描述
    图中红色为只读值,绿色为可读可写
    Time.time 表示从游戏开发到现在的时间,会随着游戏的暂停而停止计算。
    Time.timeSinceLevelLoad 表示从当前Scene开始到目前为止的时间,也会随着暂停操作而停止。
    Time.deltaTime 表示从上一帧到当前帧时间,以秒为单位。
    Time.fixedTime 表示以秒计游戏开始的时间,固定时间以定期间隔更新(相当于fixedDeltaTime)直到达到time属性。
    Time.fixedDeltaTime 表示以秒计间隔,在物理和其他固定帧率进行更新,在Edit->ProjectSettings->Time的Fixed Timestep可以自行设置。
    Time.SmoothDeltaTime 表示一个平稳的deltaTime,根据前
    N帧的时间加权平均的值。
    Time.timeScale 时间缩放,默认值为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,非常有用。
    Time.frameCount 总帧数
    Time.realtimeSinceStartup 表示自游戏开始后的总时间,即使暂停也会不断的增加。
    Time.captureFramerate 表示设置每秒的帧率,然后不考虑真实时间。
    Time.unscaledDeltaTime 不考虑timescale时候与deltaTime相同,若timescale被设置,则无效。
    Time.unscaledTime 不考虑timescale时候与time相同,若timescale被设置,则无效。

    总结

    总之,学这个蛮有意思的,很有成就感让别人玩自己写的游戏,我也要加快学习的进度了,但是又要考试好烦啊啊啊啊啊。

    展开全文
  • 实战进阶学习Unity3d游戏开发

    万人学习 2019-04-23 13:29:26
    零起步,快进阶,基础+算法融汇到项目实战中,细节+核心直到上线,一步步引领菜鸟做出大虾级的开发。
  • Unity3d学习——基础篇

    千次阅读 2018-06-06 23:55:06
    最新的Unity5支持两种编程语言,C#和JavaScript,其中JavaScript语言更容易上手,C#是面向对象的编程语言,语法与C++、Java较为接近,在编程思想上更符合Unity引擎的原理。Unity C#语言基础知识:变量、数组与函数:...

    《Uinty3d官方案例精讲》

    脚本:

    游戏对象间的逻辑关系需要通过脚本实现,游戏关卡的设计、各类角色的运动、场景的资源管理等,其背后都是脚本在驱动。最新的Unity5支持两种编程语言,C#和JavaScript,其中JavaScript语言更容易上手,C#是面向对象的编程语言,语法与C++、Java较为接近,在编程思想上更符合Unity引擎的原理。

    Unity C#语言基础知识:

    变量、数组与函数:

    定义变量:    类型 变量名 /*=初始值*/


    不加public、protected、private默认为private。

    如果声明public变量,并且把脚本绑定到物体上,则会在物体的Inspector视图上显示,并且可以修改值,若不想显示,可为变量加上[HideInInspector];如果希望在Inspector上限定取值范围,可以使用RangeAttribute实现。



    数组的声明和使用:    类型[] 变量 /*=初始值*/

    二维数组:


    函数的声明和使用:

    返回类型 函数名(参数列表)

    {     函数体

    }

    C++参数传递方式有传值、传址、传引用三种;而C#中只有传值和传引用两种,其中传引用可由关键字ref和out完成,ref需要实参初始化,而out不需要初始化,输出参数。

    语句、表达式和运算符:

    语句:


    运算符:

    不常见的:


    协程(Coroutine):

    在Unity中,协程的概念类似于线程,它是一种特殊的函数,能中断(通过yield语句)执行当前的代码,直到中断指令(YieldInstruction)结束后再接着之前的代码继续执行。以下是一个协程的例子:


    上面的协程表示等待五秒钟后输出当前的时间。

    在C#脚本中创建协程需遵循一下规则:

    (1)协程的返回值必须是IEnumerator。

    (2)协程的参数不能加关键字ref或out。

    (3)在C#脚本中,必须通过StartCoroutine来启动协程。

    (4)yield语句要用yield return来替代。

    (5)在函数Update和FixedUpdate中不能使用yield语句,但可以启动协程。

    在协程函数中,yield语句就像是一个红绿灯,在碰到yield语句前是绿灯,协程函数顺序执行,碰到yield语句时表示前方红灯亮,协程函数立即停下等待,当中断指令结束后红灯熄灭,绿灯变量,协程函数继续顺序执行余下的代码。

    在Unity中,绝大部分协程相关的类都继承自基类YieldInsturction。唯一例外的类是WWW,它不继承自YieldInstruction,但可以用在yield return语句中。


    yield语句在协程中的典型用法如下。值得注意的是,WaitForSeconds()受Time.timeScale影响,当Time.timeScale为0时,yield return new WaitForSecond(n)将失效。


    在C#脚本中,MonoBehaviour类中的成员函数StartCoroutine用于启动协程,该函数的声明为:


    StartCoroutine只能用于MonoBehaviour或其子类中。

    StartCoroutine接收协程名称(字符串)或IEnumerator实例作为参数。

    使用字符串作为参数启动协程时可以在StartCoroutine的第二个参数中为协程指定参数,但最多只能传递一个参数,而使用IEnumerator作为参数则没有这个限制。

    在Unity中,可以使用函数StopCoroutine来终止一个协程,但这种方法只适合用于使用协程名称作为参数启动的协程。使用StopAllCoroutines可以终止该MonoBehaviour中所有能终止的协程。还有一种不常用的方法终止协程,即将协程所在游戏对象的active属性设为false,但是当再次将active属性设为true时,协程不会自动启动。

    下面是使用协程的一些实例:


    最后,书写yield语句时需要注意一下几点:

    (1)yield return语句不能位于try-catch语句块中,但可以位于try-finally中的try语句块中。

    (2)yield return语句不能放在匿名方法中。

    (3)yield return语句不能放在unsafe语句块中。

    类和类的使用:

    Unity中提供的类绝大部分都是通过UnityEngine.dll和UnityEditor.dll这两个程序集暴露出来的,其提供的接口也都在UnityEngine和UnityEditor两个命名空间中。在unity编辑器中新建的脚本都会默认添加如下两个命名空间的引用:

    using UnityEngine;

    using System.Collection;

    从Unity4.6以后,Uinty团队更新了UI部分的设计,新的UI相关的类都放在了UnityEngine.UI.dll中。

    最新的Unity5已经支持用户自定义命名空间。在实际开发中,随着代码量不断增加,可以将相同功能的代码模块放在同一个命名空间,以便于进行代码管理。

    在Unity中,任何要绑定到GameObject上的脚本都必须继承自MonoBehaviour。若一个类不继承自MonoBehaviour,在拖动到GameObject上会报以下错。


    常用类的关系:


    输出调试信息:

    print


    Debug.log


    第一种方法实际是第二种方法的封装,其底层实现基于第二种方法。需要注意的是,在任意C#脚本中都可以采用Debug类的Log系列方法输出,但prinf函数只适用于MonoBehaviour的派生类。

    Unity脚本时间执行顺序:

    在Unity脚本中,各事件函数的功能和大体的执行顺序如下:

    1、Awake:Awake用于脚本唤醒。此方法为系统执行的第一个方法,用于脚本的初始化,在脚本的生命周期中只执行一次。

    2、Start:在Awake之后执行,在脚本生命周期只执行一次。和Awake常用于初始化成员变量。

    3、FixedUpdate:用于固定频率更新。默认每秒50次。通常情况下,FixedUpdate()会比Update()更频繁地调用。

    4、Update:用于正常更新,即用于帧更新后同步场景状态。此方法每帧都会由系统自动调用一次。在使用Update()时,对于一些变量,如速度、移动距离等通常需要乘以Time.deltaTime来抵消帧率带来的影响,使物体状态的改变看起来比较均匀、正常。而在FixedUpdate中,由于其更新频率固定,所以不需要采用Time.deltaTime来修正状态改变频率。

    5、LateUpdate:用于延迟更新,此方法在Update()之后执行,每一帧调用一次。

    6、OnGUI:OnGUI用于绘制用户交互界面,每一帧会调用多次。其中,与布局和重绘相关的事件会被优先处理,然后是键盘和鼠标事件。

    7、OnDestory:在当前脚本销毁时调用。若在脚本中动态分配了内存,可以在OnDestory()中进行释放。

    展开全文
  • 2018年什么游戏最火? 不用问,肯定是人人都在撸的“王者荣耀”和吃鸡游戏了。...Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综...
  • Unity教程学习

    千次阅读 2019-04-11 10:38:52
    学习Unity有一段时间了,最近有空闲,重头学习一遍教程,做下记录,仅以此篇纪念。 教程的学习主要以操作步骤和说明为主。
  • 2019年Unity学习资源指南[精心整理]

    千次阅读 2019-07-14 14:02:23
    前言 进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1、主流的学习社区与网站。 2、该领域的知名大牛与...2019年Unity学习资源指南(本文相...
  • Unity3D学习路线与学习经验分享

    万次阅读 多人点赞 2019-07-22 13:34:34
    Unity3D学习路线与学习经验分享//最后一次更新为2019.7.22日,更新了一些废掉的链接 作者:15游02 丁祺 你好,这篇文档是我的导师孙老师(以下简称老孙)指名我 书写给新手、初学者以及技能有些许缺陷的人的一篇...
  • Unity学习 — 官方中文版本教程详解

    万次阅读 2018-10-18 10:36:02
    1,Unity推出的中文,有利于英文不太好的人去学习和记忆 2,由于版本限制,并不是所有版本都可以使用 二:简单的顺序循环数组内元素 这里以顺序循环天空盒为例子来写的代码 public List&amp;lt;Material...
  • Unity3D 之 学习路线与学习经验分享

    千次阅读 2019-01-10 15:06:19
    Unity3D学习路线与学习经验分享 该博文出自作者15游02 丁祺,是一篇非常全面的Unity3D学习路线。作者通过不同切入点与角度,并根据以上人群的不同技术程度,由浅入深,分享了他的学习及工作经验。下面让我们进入主题...
  • Unity之路二:找到从Unity学习里面下载的unitypackage并将项目导入Unity 一、点击前往中的前往文件夹 二、并输入 ~/Library/Unity/Asset Store 三、 就找到从学习里面下载的项目了
  • 还专门做了一个Unity学习线路图。 Unity学习路线及课程介绍 还整理了一套完整的Unity学习视频资料。 初级学习视频: Unity系列之C#编程语言基础 课程介绍: 重点讲解C#基础知识,适用于初学者...
  • OpenCVForUnity学习

    千次阅读 2018-08-01 10:07:11
    OpenCVForUnity学习 第一课:Texture2DToMatExample EventSystem.current.IsPointerOverGameObject ();UGUI输入键悬空bool判断 Texture2DToMatExample.cs; An example of converting a Texture2D image to ...
  • 2018年Unity学习资源指南(精心整理)

    千次阅读 多人点赞 2018-11-27 11:33:17
    前言 进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1、主流的学习社区与网站。...因此,总结一下Unity相关学习资源,可能有些不足,欢迎大...
  • Unity学习之路10——多人游戏与网络

    千次阅读 2018-06-26 22:58:20
    Unity学习之路10——多人游戏与网络 作业要求: 选择一个以前的作业或自己选择一个小游戏,设计成网络游戏 效果图: 实现过程 在上一次作业的基础上,将AI小坦克改成双人对战坦克游戏。 主要参考资料...
  • Unity学习推荐书籍

    万次阅读 2017-10-07 10:53:57
    Mysql书籍:MySQL数据库应用从入门到精通 C#推荐书籍: Head First C#轻松学C# Unity书籍: Unity 3D游戏开发 Unity 3D手机游戏开发 Unity着色器和屏幕特效开发秘笈FR:海涛高软(hunk Xu)
  • [unity] unity学习——弹球游戏

    千次阅读 2016-07-03 16:54:37
    一、学习内容 通过弹球游戏,来熟悉unity的简单操作,以及一些脚本的添加及控制。 弹球游戏: 即只有一个底盘和一个球,控制底盘去接球,球撞到底盘后随机一个角度反弹。没接住球就算结束。 二、弹球游戏的制作 1、...
  • unity学习之鼠标事件

    万次阅读 2015-01-16 21:11:05
    unity学习,希望我的博客能给喜欢unity的朋友带来帮助 今天完成了游戏的第一个关卡,觉得和别的组不同之处之一就是按钮的不同,登录注册等按钮我没用GUI的Button来做,而是用GUITexture来做,做出来的效果就是...
  • Unity学习记录①: 关于教程无法正常运行的问题 可能有的同学在从UnityHub上开官方教程的时候会遇到这种情况: 直接弹出了这种界面而没有官方教程的亲切对话框 (我有问过学长,据说是版本问题,GetStarted这套教程...
1 2 3 4 5 ... 20
收藏数 44,242
精华内容 17,696
关键字:

unity学习