unity教程_unity3d教程 - CSDN
精华内容
参与话题
  • Unity3D游戏引擎最详尽基础教程

    万次阅读 2018-06-27 15:23:06
    我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGore这样的3D平面射击游戏简直轻而易举,而就连使命召唤这样的大型3d游戏,如果素材得当也不在话下。二是...

    我一直向所有想做游戏的朋友推荐Unity3D,为什么呢?首先是因为专业,Unity3D非常强大,用它创建一个类似MiniGore这样的3D平面射击游戏简直轻而易举,而就连使命召唤这样的大型3d游戏,如果素材得当也不在话下。二是因为易用,他的操作非常容易,而使用的脚本语言又是JavaScript或者C#,不仅非常简单,也让各个种类的程序员都非常容易上手。再次,就是因为免费,如果你不使用Pro或者Mobile的内容的话,Unity3d就是完全免费的。还有就是对3D模型的兼容性,几乎任何3d模型都可以导入到unity中,可以说是一个很方便的特性。

     

    今天,我就来讲讲Unity3D的基础操作,这可以说是一个新手必读吧,读完之后,你一定会惊叹,原来做一个游戏这么简单。

     

    第一节 加入重力

     

    我们先打开Unity3d,新建一个场景(Scene),新建的时候应该会有对话框要求你加入哪些Asset Package,记得选择Physics Material,因为后面我们一定要用的哦亲。

     

    如果创建的时候没加,你可以再后来的Asset菜单里加:

     

     

    之后,我们建立一个Cude,调整一下x和z的大小,我这里调成了25,让它变成一个地板,你也可以放一个texture上去,看起来更加真实,我这里从简,再创建一个sphere,在component中选择Physics中的RigidBody,前提是选中你的sphere物体,之后会看到这个Sphere的inpector中加入一个component叫做RigidBody,调整好Camera运行一下,你就会发现Sphere受到重力的影响自动掉落到地板上。

     

     

    之后,通过我们之前引入的Physics Materials资源包,你还可以选择这个物体的物理性质,我这里选择Bouncy(跳跳),落下之后,这个物体就会蹦来蹦去的,呵呵

     

     

     

    第二节 检测碰撞

     

    下面我们通过简单的JavaScript语句来检测碰撞,这在制作游戏中是很有用的,比如说检测到子弹和敌人的碰撞之后,可以使用我们后来要讲到destory命令消灭敌人。

     

    这次我们新建一个Terrain项目,在用Grass贴图来覆盖住它,如果你找不到贴图的话,记得在Asset菜单里找找,看看哪些资源你还没有引入进去。

     

    然后再加入一个Cube项目,我这里叫做PlayerCube,为他加上重力,之后选择bouncy性质,然后我们再新建一个Cude,调整y和z的值让他变成一堵墙,放置好,命名为Wall,别忘了给Terrain改名为Terrain,

     

    之后我们在Asset菜单中建立一个JavaScript项目,改名为CollisionDetect,双击打开,如果你使用的是Unity 3.5的话,就会打开MonoDev,这是一个新工具还是很好用的,在其中新建一个函数,别管Start和Update函数,我们待会会讲。

     

    加入以下代码:

     

    function OnCollisionEnter(theCollision : Collision){
    
     
    
    if(theCollision.gameObject.name=="Terrain"){
    
     
    
    Debug.Log("Hit terrain");
    
     
    
    }else if(theCollision.gameObject.name=="Wall"){
    
     
    
    Debug.Log("Hit the wall");
    
     
    
    }
    
     
    
    }
    

     

    如果看不懂这些代码的话,也没关系,JavaScript是最好学的编程语言,Google一下吧,保存这个JS文件,然后拖到我们的PlayerCube上。

     

    这时候我们运行,就会看到PlayerCube到处蹦,碰到Terrain的时候,控制台就会显示Hit Terrain,碰到wall的时候就会显示Hit the wall。

     

    第三节  检测用户输入

     

    下面我们来讲一下如何检测用户的键盘和鼠标的操作。

     

    就用我们上次的那个场景,这次我们给PlayerCube加上我们可以控制的动作。就是通过“wasd”或者上下左右键来控制移动。

     

    请注意,如果要使用这里使用的方法来控制移动,那么所控制的物体不能够是一个物理世界的物体,也就是说你要把RigidBody这个component删掉,如果你想要在物理世界里移动物体的话,你就需要我们在下面会讲到的力(force)。

     

    首先我们新建一个JavaScript文件,这里命名为InputDetect吧,输入下面的代码:

     

    #pragma strict
    
     
    
    var Player : GameObject;
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    Player = GameObject.Find("PlayerCube");
    
     
    
    if(Input.GetKey(KeyCode.W)){
    
     
    
    Debug.Log("Hit w");
    
     
    
    Player.transform.Translate(Vector3.forward * 2);
    
     
    
    }else if(Input.GetKey(KeyCode.S)){
    
     
    
    Debug.Log("Hit s");
    
     
    
    Player.transform.Translate(Vector3.back * 2);
    
     
    
    }else if(Input.GetKey(KeyCode.A)){
    
     
    
    Debug.Log("Hit a");
    
     
    
    Player.transform.Translate(Vector3.left * 2);
    
     
    
    }else if(Input.GetKey(KeyCode.D)){
    
     
    
    Debug.Log("Hit d");
    
     
    
    Player.transform.Translate(Vector3.right * 2);
    
     
    
    }
    
     
    
     
    
    }
    

     

    这时,我们运行这个游戏,就可以通过“WASD”来控制PlayerCube的移动了。

     

     

    第四节 使用Prefab复制和控制物体

     

    我们可以直接把Prefab看做是个妈,她能生好多小孩,如果妈妈的DNA变了,小孩的跟着变,就是说你可以用Prefab创建物体,然后通过这个Prefab修改所有这类物体的性质,这对于批量生成的敌人或者NPC来说很有用。

     

    首先,先创建一个Prefab,我这里命名为“Mother”,之后新建一个Sphere物体,当然你也可以建一些其他的物体,之后给这个Sphere加上你想要的性质,我加入了RigidBody和Bouncy,之后将Sphere拖到Mother上,你会发现mother变蓝了,之后你就可以随意拖一些mother物体到屏幕上去,你会发现所有的Prefab创建出的物体在清单上都是蓝色的,说明他们都有共同的性质。

     

     

    当然,作用于一个Prefab上的脚本也会作用到它的子物体上去。

     

    第五节 使用Destroy命令消灭物体

     

    我们游戏中怎么能够没有敌人呢?有敌人就得能够消灭他们,这时候,我们就会使用Destroy命令了。

     

    在这里,我们使用上次Mother生出来的小球球作为敌银,一旦我们的PlayerCube碰撞到了小球的话,就是用Destroy让小球消失。

     

    新建一个JavaScript脚本,输入以下代码:

     

    #pragma strict
    
     
    
    var mother : GameObject;
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    }
    
     
    
    function OnCollisionEnter(theCollision : Collision){
    
     
    
    mother = GameObject.Find("Mother");
    
     
    
    if(theCollision.gameObject.name=="Mother"){
    
     
    
    Debug.Log("Hit mother");
    
     
    
    Destroy(mother);
    
     
    
    }
    
     
    
    }
    

     

    这段代码很好懂吧,就是检验碰撞,然后销毁碰撞到的Mother物体,别忘了把Destroy的JavaScript文件拖到PlayerCube上去。运行一下,就可以看到碰撞到的物体都被消灭了。

     

     

    第六节 使用Instantiate命令创造物体

     

    我们直接在界面创造的物体都只是会在界面被初始化的时候加载,那么,如果为了节约内存或者其他什么事情,我想要在游戏过程中添加物体,那该怎么办呢?你猜对了,就是用instantiate命令。

     

    这个命令就是英文实例化的意思,下面我们给碰撞之后消失的mother物体继续初始化一些,也就是说消灭了一些,又来了一大波···

     

    为什么非要用mother呢?因为只有拥有Prefab的物体才能够使用这个命令哦亲。

     

    function Update () {
    
     
    
    var instance : GameObject = Instantiate (PreFab,transform.position,transform.rotation);
    
     
    
    }
    

     

    注意:这样的话,每次刷新一帧都会出现一个新的mother物体,你的内存也许会受不了哦,更合理的方法是按下空格键,然后出现一个新的物体,你可以自己做吗?试试看

     

    你可能已经注意到了,每一个初始化的脚本都会默认有两个函数,就是:

    Update()函数 —— 每刷新一帧都会检查并执行

    Start()函数 —— 只在场景初始化的时候执行

     

    第七节 使用Timer计时器

     

    这次,我们要让一个计时器倒数,倒数到0的时候创建一个mother物体,来看Javascript代码吧:

     

    #pragma strict
    
     
    
    var myTimer : float = 5.0;
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    if (myTimer >= 0){
    
    myTimer -= Time.deltaTime;
    
    guiText.text=(""+myTimer);
    
    }
    
     
    
    if (myTimer <= 0){
    
    guiText.text = ("Done");
    
    }
    
     
    
    }
    

     

    把这个脚本拖到GUItext控件上,你会发现我们所期待的效果。

     

     

    第八节 让物体动起来

     

    其实让物体行动的技巧,我们已经会了,不是吗?

     

    如果你觉得不是的话,没有认真的看上面的文章哦,我就再给你讲一次吧。

     

    请特别注意,这种方法不适合物理世界的物体,如果向移动物理世界的物体,请看下一节:

     

    创建一个Cylinder物体,之后将下面的脚本附着在上面。

     

    #pragma strict
    
     
    
    var myObject : GameObject;
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    myObject.gameObject.Find("Cylinder");
    
    myObject.transform.Translate(Vector3(0,0,1));
    
     
    
    }
    

     

    第九节 使用物理世界的力

     

    这里是我们讲移动物体的重点,因为大部分的物体移动都是在物理世界完成的,而如果想要在物理世界移动东西,除了position和rotation的移动之外,就是使用“力”了,在高中学过经典物理学的人都知道,要使物体用移动,木有力是不行的,那么我们就开始吧,再新建一个什么物体,我新建了一个Capsule。

     

    之后,我会在这个物体的上方加一个力,让它用力的向下飞,触碰到地之后,通过bouncy这个性质再弹回来。新建一个JavaScript文件,就叫做Force吧,加入如下代码:

     

    #pragma strict
    
     
    
    var Power : float = 500.0;
    
     
    
    function Start () {
    
     
    
    rigidbody.AddForce(Vector3(0,Power,0));
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    }
    

     

    运行之后,会发现capsule其实是个很有幽默感的物体。

     

     

    第十节 使用贴图和材质

     

    贴图和材质能够使你的虚拟3D世界看起来更加真实,不幸的是,需要大量在PS和AI中的设计工作,最近我一想到要打开PS就有点烦···呜呜。

     

    闲话少说,我已经做好了一个贴图,怎么使用在材质上呢?之后我们怎么才能通过材质使用到其他物体之上呢?

     

     

    就像你看到的一样,我是直接拖进去的···

     

    之后我们从新建菜单中选择Material这一项,之后选中material,将贴图拖进material的贴图选框里,之后,就可以拖动这个Material赋给任何物体了。

     

     

    第十一节 使用声效和音乐

     

    音效和音乐对于一个游戏来说是非常重要的,一个寂静无声的世界是无聊的,而且不真实,什么?你说声效和音乐是一个东西?那你就错了,声效是,比如说发射子弹的声音,什么东西爆炸的声音等等,而音乐则是背景音乐什么的,不一样的亲。

     

    对于音乐来说,往往使用立体声音乐,而对于生效来说,我们随便使用一个简单的音乐文件就可以了。

     

    想要在Unity3D中播放音乐,你需要两样东西,一个是监听器,一个是音乐源,监听器是Camera的一个组件,所以你不用担心,你唯一需要增加的就是音乐源。

     

    直接将项目中的音乐拖放到Audio Source项就可以播放,但是如果我们想要在某个特定的点上 播放音乐该怎么办呢?答案就是,写一个脚本,新建一个脚本,输入如下代码:

     

    #pragma strict
    
     
    
    var myClip : AudioClip;
    
     
    
    function Start () {
    
     
    
    AudioSource.PlayClipAtPoint(myClip,transform.position);
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    }
    

     

    之后将这个脚本拖放到我们的物体上,最后,将音频文件拖放到AudioSource选项框中。

     

    第十二节 使用关节

     

    关节在3D游戏之中的应用非常广,主要在于物理世界的重力影响,下面我们就通过关节来制作一个钟摆。

     

    这次我们新建一个场景,松了一口气?刚才的场景是不是太乱了?你做的时候可以整理一下嘛,呵呵

     

    新建一个cube作为地面,之后一个cube放在上空作为摆垂,之后用几个capsule分别用component中的fixed joint连接起来,之后最上面的那个capsule与世界相连,使用Hinge Joint,这样的话,他会默认与世界相连,不用担心,看图

     

     

     

    第十三节 使用Axes

     

    在Edit – Project Setting – input 中可以查看各种形式的input,这些input方法在unity中被叫做Axes。

     

    我们创建一个JavaScript,叫做GetAxes,输入以下内容:

     

    #pragma strict
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    var Honriz : float = Input.GetAxis("Honrizontal");
    
     
    
    Debug.Log(Honriz);
    
     
    
    }
    

     

    在拖放脚本之后,运行这个场景,看看控制台输出了什么,你就明白了。

     

     

    第十四节 使用触发器

     

    触发器一般用于检测一个物体是否处于一个空间内,他是怎么做到的呢?

     

    首先,他创造一个大的物体,之后将他的randerer属性去掉,他就隐形了,这样,我们再把他的isCollide属性去掉,他就不会发生碰撞了,之后,我们只需要用脚本检测物体是否与这个物体碰撞就可以了。

     

    我们新建一个场景,做一个地板,再做一个底座,叠加起来,再在他们的上空做一个方块,设置rigidbody属性,将底座设置成为我们刚才说的那种隐形的状态,之后新建一个JavaScript脚本,输入代码

     

    #pragma strict
    
     
    
    function Start () {
    
     
    
    }
    
     
    
    function Update () {
    
     
    
    }
    
     
    
    function OnTriggerEnter (myTrigger : Collider) {
    
     
    
    if(myTrigger.gameObject.name == "box"){
    
    Debug.Log("Hit");
    
    }
    
     
    
    }
    

     

    按下运行,会发现可以检测出Hit。

     

     

    第十五节 使用GUI

     

    其实我们已经学过了如何使用GUI text,不信,我们就用屏幕上的字代替我们在上面的程序中的Debug.Log现实的内容。

     

    你自己能做吗?

     

    试试看吧,一个下午写了这么多,有点累。

     

    一定要在Unity中加入一个GUI Text,运行一下,就会发现屏幕上的GUI Text会随着你设定的的内容而变化了。

    失败是什么?没有什么,只是更走近成功一步;成功是什么?就是走过了所有通向失败的路,只剩下一条路,那就是成功的路。
    展开全文
  • 深入浅出Unity3D——第一篇

    万人学习 2019-07-01 10:35:43
    Unity3D基础知识、游戏算法一网打尽。
  • Unity3D入门教程中文版

    2020-07-30 23:31:58
    适合unit3d新手入门,pdf文件,中文版,图文并解,仅供参考
  • Unity教程学习

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

    教程1.Roll-a-ball

    需求说明:通过键盘输入控制,上下左右等按钮,控制小球移动。移动小球收集物体,统计分数。

    1).创建游戏

    1.1 新建项目

    打开unity页面,选择NEW,然后输入项目名,选择保存的位置,选择3D模式。
    创建新项目图

    1.2 新建场景

    左上方菜单栏File–New Scene,点击后,会再Hierarchy窗口看到一个场景,如下。
    新场景
    在上图蓝色选中条的右边的设置按钮,点击选择‘Save Scene As’,然后选择保存的位置并输入场景名称。保存完成后可在Project窗口中看到。
    保存的场景

    1.3 新建地面与配置Material

    菜单GameObject–3D Object–Plane,将会在场景里创建一个只有一个面的平面游戏对象,并修改名称(window平台F2)为Ground。选中该plane对象,在Inspector窗口中,Transform组件的右上方,齿轮按钮,选择Reset,这将会让Ground对象的位置等参数初始化。然后将Transform的Scale参数设置 X=2 Y=1 Z=2。注:plane对象的Y参数只分正负,正数是指向向Y轴正方向的一面可见,背面不可见,负数则相反。
    下面是设置Ground的显示效果,材质Material设置。
    新建文件夹(此不是必须的),Project窗口Create–Folder创建文件夹,重命名为Materials。
    Create–Material创建材质球,重命名为MatGround。选择该材质球,在Inspector窗口,点击MainMaps下的Albedo右边的颜色按钮,配置颜色为RGBA 0 32 64 255.
    配置颜色
    接下来为Ground设置材质球。
    方法一:选中Project下的MatGround材质球,按住拖动到Hierarchy下的Ground游戏对象上,之后Ground会变成我们设置的材质。
    方法二:选中Hierarchy下的Ground,在Inspector窗口的MeshRenderer组件上,有一个参数Materials,选中,设置其的Size为1,Element0参数设置,点击右边的小圆点,在列表中选择MatGround材质球。

    1.4 新建小球与重设位置

    Hierarchy窗口Create–3D Objec–Sphere创建一个球的游戏对象,重命名为Player,并Reset初始化。小球理应让其在地面之上,所以我们要设置小球的位置,不改变球的大小(Scale)。因为scale为(1,1,1),而地面位置为(0,0,0),让小球的最小面在地面之上,所以小球应该上移scale的Y的值的一半0.5。故设置position为(0,0.5,0)。

    2).小球的移动控制

    玩家控制小球在游戏区域内移动,碰到墙壁后不会跑出去,不会飞出去,碰到收集的物体,能收集物体。可以运用unity的物理系统,将用户的输入信息转换到小球控制上。

    2.1添加rigidbody

    Hierarchy窗口选中Player游戏对象,在Inspector窗口,最下方AddComponent–Physics–Rigidbody,添加刚体组件,因为对象已经有Collider组件(SphereCollider),可以触发物理碰撞等。

    2.2添加控制脚本

    同样的操作AddCmponent–New Script在弹出的小窗口输入自定义的脚本名称PlayerCtr,选择下方的Create and Add,等新脚本创建后,新建一个文件夹Scritps,然后将PlayerCtr脚本移动到文件夹下,方便控制。
    添加新脚本

    2.3小球移动控制

    双击PlayerCtr脚本打开编辑,建议使用visualStudio打开,设置请自行上网查找。

    2.3.1输入控制

    获取用户输入信息,因为我们只需要在平面上移动,所以我们只控制前后左右,上下不做控制。

    float moveHorizontal = Input.GetAxis("Horizontal");
    float moveVertical = Input.GetAxis("Vertical");
    

    Input是Unity的输入系统,关于调用的方法,可以通过visualStudio的联想和unity说明文档查找。GetAxis(string axisName)方法,参数是名称,名称可以在Unity的InputManager中查看,可从以下路径进入,菜单Edit–Project Settings–Input,会在Inspector窗口里显示InputManager设置面板。
    moveHorizontal 是水平左右输入值,正表示右,负表示左。
    moveVertical是水平前后输入值,正表示前,负表示后。

    2.3.2刚体控制

    小球移动运用unity物理系统,所以我们通过控制rigidbody,来实现控制小球移动。需要在我们的脚本PlayerCtr中获取刚体组件,对刚体组件操作,可通过查找文档来确定rigidbody调用的方法。

    2.3.2.1 获取刚体组件

    生成的脚本PlayerCtr继承至MonoBehaviour,存在Start(),Update()方法,这些方法可通过查找MonoBehaviour生命周期了解其调用,触发机制和前后顺序。
    在这里插入图片描述
    Start()为脚本调用的第一帧,只会执行一次,我们可以在Start里获取刚体组件。由于后面每一帧都要对刚体进行操作,把刚体变量声明成成员变量是最好的选择。

    private Rigidbody RigPlayer;
    

    在Start()中获取组件并赋值

    void Start ()
    {
      RigPlayer = GetComponent<Rigidbody>();
    }
    
    2.3.2.2 刚体运动控制

    每一帧都要对刚体进行控制,控制代码放在Update(),或FixedUpdate()中,其中FixedUpdate()适用于物理体系的调用,所以把刚体控制代码放在FixedUpdate()中。
    刚体的运动,是给刚体施加推力,查阅可得方法AddForce(Vector3 force, ForceMode mode = ForceMode.Force),或者public void AddForce(float x, float y, float z, ForceMode mode = ForceMode.Force)。
    采用前一个,Vector3是3维向量,因为我们用户只有输入左右前后,所以,我们改变x和z,y始终为0,即竖直方向上不给施加额外的推力(rigidbody本身可以设置是否有重力)。同样Vector3我们也可以把它独立成成员变量。

    private Vector3 VecDirec = Vector3.zero;
    
    private void FixedUpdate()
        {
            float moveHorizontal = Input.GetAxis("Horizontal");
            float moveVertical = Input.GetAxis("Vertical");
            VecDirec.x = moveHorizontal;
            VecDirec.z = moveVertical;
            RigPlayer.AddForce(VecDirec);
        }
    

    Play模式测试,会发现运行速度不行,不满足,那我们就需要调整vector3的x和z的值,通过给其一个倍数来控制,为了方便修改,这个倍数用public的成员变量来设置,这样可以在Inspector可视化修改其值。修改后如下。

    public float Speed;
    
    private void FixedUpdate()
    {
       float moveHorizontal = Input.GetAxis("Horizontal");
       float moveVertical = Input.GetAxis("Vertical");
       VecDirec.x = moveHorizontal*Speed;
       VecDirec.z = moveVertical*Speed;
       RigPlayer.AddForce(VecDirec);
    }
    

    可视化修改值
    到此,小球的移动控制已经完成。

    3).相机跟随

    场景里有个MainCamera游戏对象,其上挂着Camera组件,这是用户看到的画面效果,也就是Game中的效果,我们需要让镜头跟随小球移动。
    先调整MainCamera的位置角度,position设置为(0,10,0),旋转设置Rotation为(45,0,0)。
    处理方法一,不是合理的方法,但可以提供一个思路,把MainCamera对象拖动到Player小球对象下面,让其依附于小球。但是从Play模式下会发现问题,小球旋转,镜头跟着旋转,这样完成找不到方向。毫无体验感可言。我们的需求只是镜头跟随小球移动,但是镜头不做旋转。所以MainCamrera还是独立,给其添加一个控制脚本来实现该跟随功能。
    选中MainCamera游戏对象,AddComponent–New Script输入新脚本名称CameraCtr,将新脚本移至Scripts文件夹,打开编辑。
    初始化时先获取方向

    	/// <summary>
        /// 小球Player的Transform
        /// </summary>
        public Transform TraPlayer;
        private Vector3 offset;
    	// Use this for initialization
    	void Start () {
            offset = transform.position - TraPlayer.position;
    	}
    

    然后每一帧更新MainCamera的位置,对相机的操作,代码应该放在LateUpdate中。

    private void LateUpdate()
        {
            transform.position = TraPlayer.position + offset;
        }
    

    记得将Player小球挂载到MainCamera对象的脚本的的TraPlayer参数上(在MainCamera对象的Inspector窗口)。

    4).创建游戏区域

    需要4面墙壁来挡住小球,防止小球跑出地面区域,为了方便管理,先创建一个空游戏对象并初始化位置,重命名为Wall。
    Create–Create Empty,在Inspector中Transform进行Reset,F2重命名。
    墙壁总控制
    创建第一个墙壁,Create–3D Object–Cube,初始化位置后,设置scale为(0.5,2,20.5),这是左右墙的设置,重命名为EastwardWall。接下来再Scene视图中,选中该墙壁,选择菜单栏下的第二个按钮,将墙壁移动到合适位置,最后在微调Position为(10,0,0)。把该墙壁移到Wall对象下面。
    方向按钮
    复制墙壁对象(菜单Edit–Duplicate或者选中墙壁,快捷键ctrl+D),修改名称,移动,修改数值,最终形成合围的4面墙,统一放在Wall对象下管理。注意,前后墙壁可以通过改变Rotation的Y为90实现旋转。
    墙壁效果图
    由于该游戏中,地板和墙壁都是不会动态改变移动,旋转,拉伸的,所以可以设置为静态,以地面为例,选中Ground对象,在Inspector页面,右上方有个static勾选按钮,勾选。或者在其下拉中选择需要的静态选项。
    静态勾选

    5).收集对象

    5.1创建收集预制品

    收集对象要让用户感觉到,要与其他的做区别,怎么突出显示呢?在不考虑性能情况下,要突显出来。一是收集物设置成运动的,二是颜色区别。
    创建收集物体的游戏对象。Create–3D Object–Cube,初始化Reset,重命名为Collection。设置位置,使其悬空,高于地面。设置角度,使其倾斜(45,45,45)。
    设置成运动状态。添加一个新脚本RotationCtr,因为没有物理力的作用,所以在Update里更新旋转角度。

     private Vector3 VecRot = new Vector3(15, 30, 45);
     void Update () {
            transform.Rotate(VecRot*Time.deltaTime);
    	}
    

    为了让其平滑的运动,每一帧运动的角度要跟每一帧的时间做处理。Time.deltaTime是上一帧到这一帧的时间。
    颜色处理。收集物体要跟地面,墙壁,小球做区分,所以最好用不同颜色处理。直接复制原来的地面的材质球,新的材质球更改颜色,在给收集物添加该材质。
    收集物体
    做成预制品保存,进行复用。在Project窗口新建文件夹Prefabs,然后将Collection收集物体对象拖动到Prefabs文件夹下,这样就会形成一个收集物预制品。复制收集物,调整位置,形成一个圆。

    5.2收集物体

    小球碰到收集物后,收集物被收集,则要从镜头里消失。涉及几点,一碰撞检测,二收集物体的消失控制。

    5.2.1碰撞检测

    基于unity的物理系统,碰撞检测是通过rigidbody和collider碰撞器检测的。从之前情况看到,小球碰到收集物会被弹开,但是我们需要的是碰到收集物体后,不会影响小球原先的运动,所以在收集物的碰撞器我们需要做额外处理,让其有碰撞的基础,同时又不触发物理碰撞。
    其实这就是将碰撞器变成触发器,将BoxCollider上的IsTrigger勾选上,这样该对象就变成一个触发器,不会发生物理的碰撞反弹之类的效果。另外,地板,墙壁之类的一定时碰撞器不是触发器。
    触发器

    5.2.2收集物的消失控制

    IsTrigger勾选后,变成触发器,我们需要获取触发器被触发的情况,这个可以在小球的脚本上去控制,因为小球挂了rigidbody,小球碰到触发器,会在其下的脚本调用有关触发器的方法,下面这几个是3D 触发器触发的方法,分别是进入触发器时调用,离开触发器时调用,处在触发器中调用且只要在触发器中,会一直调用。

    	private void OnTriggerEnter(Collider other)
        {}
        private void OnTriggerExit(Collider other)
        {}
        private void OnTriggerStay(Collider other)
        {}
    

    因为我们在一接触就要让收集物体消失,所以需要Enter的方法。还需要考虑一个,如果又多种触发器,我们怎么区分时碰撞到哪一种,解决方法是,给触发器的游戏对象加上Tag标签,通过对比tag来区分。
    tag标签
    最后是消失控制,如上图,tag标签上面是游戏对象的名称还有一个勾选,勾选状态就是对象的显示控制。选中,该对象就是显示状态,不选中,就是消失,隐藏状态。
    整理一下,就是在小球脚本上对private void OnTriggerEnter(Collider other)方法里处理。其中参数other是小球接触到的触发器,通过other对比tag,方法是Component上的CompareTag(参数)参数是tag的字符串。对符合要求的other,执行消失操作。也就是调用GameObject的SetActive方法。代码如下。

    private void OnTriggerEnter(Collider other)
        {
            if(other.CompareTag("Collection"))
            {
                other.gameObject.SetActive(false);
            }
        }
    

    另外,页面上需要做一些处理,新增触发的tag,为收集物体的预制品添加tag。
    新增。任意选中一个游戏对象,点击Tag的名称,再下拉菜单中点击Add Tag。。。在tag页面中点击+,新增一个tag,输入新增的名称。
    新增Tag
    在收集物体预制品上,同样点击tag名称,下拉菜单选择刚才新增的tag,注意这个名称要跟脚本的的CompareTag的参数是一样的。

    5.2.3物理性能优化

    unity的物理系统,对动态和静态的性能消耗是又差别的。动态的物理对象是添加了Collider和rigidbody的游戏对象,静态的是添加了Collider,没有rigidbody且一直在改变(位置,选择,大小拉伸)的游戏对象。
    收集的物体对象一直在旋转,但它是静态的,性能上,静态的会将一些信息保存到缓存中,由于一直在运动,所以每一帧都要将信息重新缓存到缓存里,这会造成额外的性能开销。因为动态的,信息一直在动态更新,不会做缓存。为了减少这部分缓存性能开销,我们要把静态的设定,改成动态的。
    改成动态的,最简单的是为这些收集物体增加rigidbody,并修改rigidbody的一些设置,使其不会有物理属性,而是作为触发器存在。
    方法一:取消rigidbody的UseGravity,这样作为触发器的收集物体就不会因为重力而往下掉落,因为是触发器,会穿过地面。但是这个设置还是会收到物理力的影响。
    方法二:勾选IsKinematic,这样物体会变成动态的,不受物理力影响,但是其形状大小等改变之类的,受到脚本影响。通过脚本修改Transform或动画等控制。
    至此游戏控制基本完成,剩下分数统计之类的其余功能。

    6).分数统计胜利提示

    收集了物体后,需要对分数进行统计并显示,全部收集完成后,显示胜利。

    6.1分数统计与显示

    在Player上的PlayerCtr脚本里对收集的分数进行统计。
    声明并初始化。

    private int count = 0;
    

    收集到物体后,增加分数,最简单处理,一个收集物体增加1。

    private void OnTriggerEnter(Collider other)
        {
            if(other.CompareTag("Collection"))
            {
                other.gameObject.SetActive(false);
                ++count;
            }
        }
    

    分数显示,在Hierarchy窗口,Create–UI–Text。会创建三个对象,Canvas是存放UI的父对象,EventSystem是UI的事件系统。还有一个Text是文本UI。我们把分数放到左上角显示。
    首先颜色改为白色。
    字体颜色设置
    位置设置到左上方,并留一定边距。
    在这里插入图片描述
    将文字内容删除。然后再脚本里初始化和显示文字。在PlayerCtr显示设置共有变量。记的要将Text对象拖动到改变量上,挂载上去。

    public Text TxtCount;
    

    初始化。

    TxtCount.text = "count:" + Count.ToString();
    

    在收集到收集物体后,更新显示内容,因为代码一样,可以抽离出来,处理成独立的方法。在初始化和更新分数时调用该方法。

    public void SetCountText()
        {
            TxtCount.text = "count:" + Count.ToString();
        }
    

    6.2胜利显示

    在所有收集物体被收集完成后,显示胜利。这需要另外一个文本显示。操作类型,新建Text,设置位置,颜色大小等,脚本控制初始化和胜利显示。

    TxtWin.text = string.Empty;
    

    在收集触发方法里,更新胜利显示。

    if(Count>=12)
    {
       TxtWin.text = "You Win!";
    }
    

    功能脚本代码如下

    	private int Count = 0;
    	public Text TxtCount;
    	public Text TxtWin;
    	// Use this for initialization
    	void Start () {
            RigPlayer = GetComponent<Rigidbody>();
            SetCountText();
            TxtWin.text = string.Empty;
    
        }
        private void OnTriggerEnter(Collider other)
        {
            if(other.CompareTag("Collection"))
            {
                other.gameObject.SetActive(false);
                ++Count;
                SetCountText();
            }
        }
        public void SetCountText()
        {
            TxtCount.text = "count:" + Count.ToString();
            if(Count>=12)
            {
                TxtWin.text = "You Win!";
            }
        }
    

    注:代码编写完成,记得把对象挂载到对应变量上。

    7).打包

    菜单File–Build Setttings在页面里点击AddOpenScene或者把目标场景拖到上部的框里,下面根据需求选择平台。各个平台需要设置一些基础信息,请自行查找。

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

    2018年什么游戏最火?

    不用问,肯定是人人都在撸的“王者荣耀”和吃鸡游戏了。

     

    只会打游戏,不去研究可不行。一直在想,像王者荣耀这样火的游戏是用什么引擎和语言开发的?

    这里就不得不说到现在最主流的游戏开发引擎——Unity3D了。

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

    相信做开发的人知道Unity3D,很多小伙伴也在找它的教程,今天我就分享一下Unity3D视频教程,希望能帮到大家。

    Unity3D基础视频

    http://yun.itheima.com/course/137.html?stt

    资料:http://pan.baidu.com/s/1eSDUbTo 密码:o97j

    课程介绍
    这是一套关于unity的基础课程,由传智大沙漠老师随堂录制。本套课程从C#语言开始,介绍了很多语言方面的特性,这些特性在unity开发及插件使用中都会出现。接下来是关于unity的操作,包括:模型、物理引擎、粒子系统、渲染、脚本生命周期、着色器、优化等知识点。通过学习这些内容,能够独立完成一些简单的游戏开发,并为接下来更高阶段的学习提供帮助。
    视频概况
    【第一天】
    讲解C#的基础知识,主要讲语法、面向对象两个知识点。如果你有C语言的开发基础,你会发现他们太像了,是的,语法非常相似。面向对象的三大特性:封装、继承、多态,会逐一讲解,并通过一些示例代码让你有更深入的理解。最后讲解了枚举与标志枚举的使用。
    【第二天】
    讲解常用的C#的类及函数。包括泛型、集合(List<T>与Dictionary<K,V>)、文件IO操作(主要是FileStream类)、Ado.Net(操作数据库),并以MySql数据库为例进行crud操作。
    【第三天】
    讲解C#的高级部分。包括:在函数的参数主要有3种方式传递,分别为:值传递,ref引用传递,out引用传递;关键字params实现参数的数组化;扩展方法的实现;委托与事件、lambda表达式的使用;线程的使用;最后讲解了单例、工厂、发布-订阅三种设计模式。
    【第四天】
    讲解C#的套接字Socket。以聊天室为示例,自定义传输协议,客户端能够收发信息,服务器端则负责将客户端发来的转发给其它客户端。主要讲解了Socket类的构造方法、Connet、Bind、Accept、Receive、Send等方法的使用。
    【第五天】
    讲解unity的知识点主要包括:坐标系;摄像机的投影方式;内置对象的使用;Scence面板的操作;用户接入;游戏对象的旋转、移动;预设与复制;导入模型;动态的两种方式Animation、Animator;在VS中调试。
    【第六天】
    讲解unity的知识点主要包括:光照及烘焙;第一人称与第三人称设置;地形系统;粒子系统;物理引擎中的刚体、碰撞检测、角色控制器。最终通过学习的知识点完成了打箱子、夏威夷漫游两个小示例。
    【第七天】
    讲解unity的知识点主要包括:音频的播放;预保存;资源加载;场景切换;协同调用;WWW类;寻路导航。在寻路中主要实现了自定义、水平跳、向下跳三种自定义移动方式,以及动态选择层。
    【第八天】
    讲解unity的知识点主要包括:GUI、uGUI、NGUI。重点介绍的是NGUI,通过NGUI可以制作图集、字体(结合BMFont)、交互脚本(以Button为例)、动画脚本(以宽高为例),最后完成了滚动栏、拖曳的效果。

     

    展开全文
  • 2019年Unity学习资源指南[精心整理]

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

    前言

    进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括:

    • 1、主流的学习社区与网站。
    • 2、该领域的知名大牛与热心分享的从业者。
    • 3、如何有效的激励自己持续学习—主要是动手实践

    因此,总结一下Unity相关学习资源,可能有些不足,欢迎大家指正修改,一起成长!

    授人与鱼,不如授人与渔!

    2019年Unity学习资源指南(本文相关资料下载)
    视频预览介绍(感谢群友:F'(EX) 提供录制):bilibili视频地址链接

    目录

    一、Unity官方学习资源

    1、【Unity官方网站】
    2、【Unity官方文档】
    3、【Unity官方教程】
    4、【Unity GitHub】
    5、【Unity Connet】
    6、【Unity WiKi】
    7、【Unity 官方微信公众号】

    二、Unity 基础篇—— C# 学习资源

    1、【C#官方文档】
    2、【C#推荐书籍】
    3、【C#学习视频】

    三、Unity 入门篇—— Unity编辑器学习资源

    1、【Unity官方文档】
    2、【Unity推荐书籍】
    3、【Unity学习视频】

    四、Unity 进阶篇——Unity内置系统与常用插件学习资源

    1、【UI系统:UGUI】
    2、【动画与导航系统】
    3、【常用插件】

    五、Unity 强化篇——编程强化学习资源

    1、【C# 编程强化】
    2、【C# 数据结构】
    3、【3D数学基础】
    4、【编程设计模式】

    六、Unity 拓展篇——学习资源(可选择性学习)

    1、【客户端资源管理与更新技术】
    2、【游戏AI人工智能】
    3、【游戏图形编程】

    七、Unity 知名博主博文——学习资源

    1、【知名博主】
    2、【知名博文】
    3、【优质分享】

    八、Unity 网络课程——学习资源

    1、【SIKI学院】
    2、【游戏蛮牛】
    3、【其他学习网站】

    九、Unity 优秀开源项目——学习资源

    1、【游戏框架】
    .......

     

    一、Unity官方学习资源

    1、【Unity官方网站】https://unity3d.com/cn

    官方网站提供了,编辑器下载学习社区资源下载商店

    2、【Unity官方文档】https://docs.unity3d.com/Manual/index.html

    Manual:介绍相关编辑器功能与使用技巧,可以搜索查阅相关功能使用方法。
    Scripting API : 脚本API介绍,说明相关脚本接口的使用方法。

    3、【Unity官方教程】https://unity3d.com/cn/learn/tutorials

    主要是英文的教程,适合英语较好的食用(后续内容会介绍中文相关教程)。

    4、【Unity GitHub】GitHub:Unity-Technologies

    Unity官方技术源码管理GitHub,如果你还没有使用过,或者没有注册,赶紧的快去注册一个,这是个技术人的交流社区,你可以从中找到许多优秀的开源项目,提升你的开发技巧与开发效率。(后续内容会介绍相关知名的开源项目)。

    5、【Unity Connet】官方交流平台: https://connect.unity.com/

    在这里你可以,寻找你的游戏开发 人才、组建你的开发小组、发布项目、发布职位、参与官方活动、加入交流频道

    官方技术分享直播:

    6、【Unity WiKi】Unity维基社区: http://wiki.unity3d.com

    英文网页,可以使用英文搜索相关Unity的解决方案。

    7、【Unity 官方微信公众号】

                                 Unity官方平台

                           Unity官方开发者社区

     

    内有丰富的精彩好文,值得学习参考。

    二、Unity 基础篇—— C# 学习资源

    1、【C#官方文档】C# 指南:https://docs.microsoft.com/zh-cn/dotnet/csharp

    学习任何东西,最有效,最高效的方法就是查看官方的文档,毕竟这是他们写的东西,没有谁比他们更熟悉了

    2、【C#推荐书籍】

    《C# 6.0本质论》纸质书籍地址【电子版下载】

                                 C#本质论 6.0

     

    《Head First C#》(第三版 中文版)纸质书籍地址

     

                               Head First C#


    【其他C#学习书籍电子版下载】

     

    3、【C#学习视频】

    SIKI:C#初级教程 (2015版)【视频课程下载】
    SIKI:C#中级教程 (2015版)【视频课程下载】

    ——也可关注SIKI学院微信公号,回复100获取C#学习资源,当然也有其他的学习资源哦(小声点)

                          SIKI学院

     

    三、Unity 入门篇—— Unity编辑器学习资源

    1、【Unity官方文档】Unity Manual 文档 : https://docs.unity3d.com/Manual

    官方文档为英文文档,虽然难以下咽,但仍要坚持阅读,就算是一边打开翻译网页,也要去阅读,使用Google的同学,可以右键一下,虽然机翻很渣,但总比没有翻译好

    2、【Unity推荐书籍】

    《Unity5.X从入门到精通》纸质书籍地址【电子版下载】

     

                    Unity5.X 从入门到放弃(精通)

     

    《Unity 5 权威讲解》纸质书籍地址

                             Unity5 权威讲解


    【其他Unity学习书籍电子版下载】密码:4hh7

     

    3、【Unity学习视频】

    【复旦大学Coursera】基于 Unity 引擎的网络游戏设计与开发【BiliBili热心UP】

    【网校课程】零基础入门Unity - 古迹探险(基于Unity2017)(PS:免费的)

     


    四、Unity 进阶篇——Unity内置系统与常用插件学习资源

    1、【UI系统:UGUI】

    2、【动画与导航系统】

    ——相关学习资源可以到下方的推荐的学习网站寻找!(自己动手,丰衣足食!

    3、【常用插件】


    五、Unity 强化篇——编程强化学习资源

    1、【C# 编程强化】

    SIKI:C#高级教程 (2015版)【视频课程下载】密码:fksz

    2、【C# 数据结构】

    网易云课堂(浙大版)数据结构

    中国大学MOOC(西北大学)数据结构

    简书:Unity中利用C# 学习实践 数据结构笔记——GitHub源码工程(Unity2017.4.7f1)

    SIKI:C# 数据结构 (2015版)【视频课程下载】密码:lcjc

    3、【3D数学基础】

    在线课程:3D数学基础:Unity游戏开发

    4、【编程设计模式】

    《设计模式与游戏完美开发》纸质书籍地址

                  设计模式 游戏完美开发

     


    六、Unity 拓展篇——学习资源(可选择性学习)

    1、【客户端资源管理与更新技术】

    • 编辑器扩展

    • AssetBundle

    • 热更新(sLua,toLua,xLua,ILRuntime)

    xLua入门视频

    2、【游戏AI人工智能】

    3、【游戏图形编程】


    七、Unity 知名博主博文——学习资源

    1、【知名博主】


    2、【知名博文】

    3、【优质分享】


    八、Unity 网络课程——学习资源

    1、【SIKI学院】:http://www.sikiedu.com

    丰富的免费学习资源,老师授课思路清晰,教学资源整理的十分有条理,值得认真学习,还有完整的学习计划——A计划

                                                                 A计划


    Unity游戏开发视频教程目录-SIKI老师精心整理(内含大量优质课程下载地址)

     

    2、【游戏蛮牛】:http://www.manew.com

    签到领取蛮牛币,在论坛可凭币下载学习资源,游戏场景,模型资源等!

     

                    游戏蛮牛

    3、【其他学习网站】


    九、Unity 优秀开源项目——学习资源

    1、【游戏框架】

    Strangeioc

    官网——http://strangeioc.github.io/strangeioc/
    GitHub——https://github.com/strangeioc/strangeioc

                                                             Strangeioc


    Strangeioc中文教学视频

     

    QFramework

    官网—— http://qframework.io
    GitHub——https://github.com/liangxiegame/QFramework

                                                   QFremework


    作者:凉鞋的笔记 框架搭建教程
    作者的教学视频:
    UniRx 第一季 入门精讲
    UniRx 第二季 操作符篇
    UniRx 第三季 深入理解
    大家可以支持一下作者的辛苦付出!

     

    Game Framework

    官网 —— http://gameframework.cn
    GitHub——https://github.com/EllanJiang/GameFramework

                   GameFramework

     

    CatLib:Unity全栈框架

    官网——http://catlib.io
    GitHub——https://github.com/CatLib/Core

                                                  CatLib

     

    FairyGUI:超强 UI 编辑器

    官网——http://www.fairygui.com
    GitHub——https://github.com/fairygui

                    FairyGUI


    官方推荐SIKI学院入门教学——强大的UI编辑器 - FairyGUI入门教程
    官方推荐SIKI学院案例教学——狼人杀面杀APP(基于FairyGUI)

     

    ET

    前后端采用C#,基于ILRuntime 热更代码,前后台全热更方案

    ET是一个开源的游戏客户端(基于unity3d)服务端双端框架,服务端是使用C# .net core开发的分布式游戏服务端,其特点是开发效率高,性能强,双端共享逻辑代码,客户端服务端热更机制完善,同时支持可靠udp tcp websocket协议,支持服务端3D recast寻路等等

    官网:可惜目前没有,不过GitHub上有热心群友分享的学习笔记,满满的干货!
    GitHub——https://github.com/egametang/ET

    没有官方Logo,那就来个ET电影海报吧:)

     

                                                       ET


    后记

    就分享这么多吧,欢迎大家交流分享学习,同时培养自己的三种学习成长必备能力

    • 信息与资源的搜集获取能力

    • 信息与资源的分析筛选能力

    • 信息与资源的管理利用能力

    欢迎加入 Unity学习资源交流群:954131591( 狗屋是一生一屋狗药 ),共同学习交流!

                                                 Unity学习资源交流群


    感谢SIKI老师创建



    作者:lijianfex
    链接:https://www.jianshu.com/p/c65e2837290f
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • Unity3D 2018安装教程

    万次阅读 2019-06-15 21:42:20
    安装步骤: ...Unity2018.3.0相较2017版本的在启动时稳定了很多(2017版本启动经常会卡在loading界面) 如果启动Unity2018.3.0时一直卡在loading界面进不去,可以尝试以下两种解决办法: 1.1:将计算...
  • Unity学习 — 官方中文版本教程详解

    万次阅读 2018-10-18 10:36:02
    Unity官网中文版来了一:简单介绍二:简单的顺序循环数组内元素三:截图四:功能实现结束五:支持 一:简单介绍 1,Unity推出的中文,有利于英文不太好的人去学习和记忆 2,由于版本限制,并不是所有版本都...
  • Unity3D官方教程爬坑

    万次阅读 2019-10-17 15:51:04
    同时会添加到处学来的的Unity技巧 ---------------------------------------------------------- 代码: 1.使游戏对象运动的N种方式 更全面的移动方式参考 1、rigidbody.addforce(Vector3 * speed) (见roll...
  • Unity3D实战进阶教程—第二篇

    万人学习 2019-04-23 13:28:54
    继续第一篇的实战项目学习,完成游戏“弹道精英”后期开发,特效、音效的控制等至打包上线。
  • UnityHub使用方法教程和简介

    万次阅读 2018-10-16 23:51:15
    UnityHub简介 Unity Hub是最新推出的用于简化工作流程的桌面端应用程序。它提供了一个用于管理Unity项目、简化下载、查找,卸载以及安装管理多个Unity版本的工具。   Unity Hub v1.1的主要功能: Unity编辑器...
  • 每周更新unity3d视频教程,从入门到就业,官方unity3d培训,上千门实时更新课程,供学员在线观看学习,unity3d游戏开发,可以让学员随时随地学习! 免费网上学习unity3d自学教程,国内名师机构专业授课,O基础快速学习,1小时...
  • 实战进阶学习Unity3d游戏开发

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

    万人学习 2020-02-26 11:51:26
    本课程是Unity游戏开发的入门课程,课程分为上、下两个部分。下部分主要介绍JavaScript脚本程序开发、动画、粒子、网络和GUI系统
  • Unity2018.3.11下载安装详细图文教程

    万次阅读 2019-04-05 19:40:15
    1、在官网下载安装包 个人版官方下载网址: ...3、下载完毕后,可以看到Unity的安装包,双击它后即可进行Unity的安装 4、点Next 5、接受协议,Next 6、除了默认选项,如果要做安卓开发,还要选中Android Build Su...
  • Unity游戏开发入门教程之C#集合

    万人学习 2015-04-21 11:49:17
    该套视频主要针对初级的想学习Unity的学生,主讲语言的基本,简单语法。从数据的类型到方法的重载再到构造方法和析构方法再到后事件的概念与本质,学习难度进一步加深,对于初级的学生来说是一个非常好的,也非常...
  • 基于Unity的游戏开发(上)

    万人学习 2019-06-24 11:55:37
    本课程是Unity游戏开发的入门课程,课程分为上、下两个部分。上篇主要讲述游戏的基本概念、Unity的开发环境、游戏资源的创建和使用等基础内容。
  • Unity3D着色器程序设计-CG版

    万人学习 2018-10-22 21:38:06
    本课程将带领大家学习Unity3D中的着色器程序
  • 游戏开发unity基础知识系列:(一)unity 2019 下载与安装 声明:未经作者允许,严禁商用,转载请标明出处和来源,谢谢 零、前言 本人在unity2d方面使用较多,关于unity的使用后面预计会不定期持续更新,自己...
  • Unity轻松制作塔防游戏

    万人学习 2019-01-31 11:31:57
    玩儿过塔防游戏吗?听说过《保卫萝卜》和《塔防战争》吗?本系列课程使用简单易懂的逻辑带你一起...本课程经过精心录制,带你轻松学习更多知识,只要你对Unity有一些基本操作的认识,就可以跟着老师一起完成这款游戏。
1 2 3 4 5 ... 20
收藏数 24,729
精华内容 9,891
关键字:

unity教程