unity3d官方案例精讲_unity官方案例精讲 - CSDN
  • Unity官方案例精讲PDF以及随书配套资源,高清,资源全面,很好用
  • Unity官方案例精讲,只有PDF,没有随书的代码。微软雅黑字体
  • Unity官方经典案例精讲,StarTrooper、Nightmares - Unite Training Day 2014、Third Person MMO Controller等,由于文件太大,并不包含素材包。
  • Unity官方案例精讲》即从这些示例中精心挑选了若干个具有代表性的实例进行详细讲解,在每个实例中都重点切入一个或几个Unity引擎的核心功能点,进而以接近于现场教学的方式,引导读者一边阅读、一边动手,通过实际...
  • Unity官方案例精讲pdf

    2020-03-07 23:33:55
    非常清楚的Unity官方案例精讲,感兴趣的小伙伴可以下载!
  • unity中,协程的概念类似于线程,它是一种特殊的函数,能够中断(通过yield语句)执行当前的代码,直到中断指令(YieldInstruction)结束后再接着执行之前的代码。 典型用法注意事项 协程的返回值必须是...

    什么是协程(Coroutine)

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

    典型用法

    这里写图片描述

    注意事项

    1. 协程的返回值必须是IEnunmerator
    2. 协程的参数不能加ref或out
    3. 在c#脚本中,必须通过StartCoroutine来驱动协程
    4. yield语句要用yield return 来代替
    5. StartCoroutine只能在monoBehaviour或其子类中使用
    6. StartCoroutine接收协程的名称(字符串)或IEnumerator实例作为参数
    7. 在Unity中,可以使用函数StopCoroutine来终止一个协程,但这种方法只适用于使用协程的名称作为参数启动的协程。使用StopAllCoroutine可以终止该monoBehaviour中的所有协程。还有一个不常用的方法来终止协程,即将协程所在的游戏对象的active属性设置为false,但是当再次将active改为TRUE时,协程不会自动启动。
    8. yield return 语句不能用在try-catch语句块中,但可以用在try-finally中的try语句块中
    9. yield return语句不能放在匿名方法中
    10. yield return语句不能放在unsafe语句块中

    示例代码

     IEnumerator WaitAndPrint()
        {
            yield return new WaitForSeconds(1);//WaitForSeconds()受Time.timeScale影响,当Time.timeScale为0时,yield return new WaitForSeconds(n) 将失效
            print("WaitAndPrint");
        }
     IEnumerator Download()
        {
            string url = "http://download.csdn.net/detail/sakurallj/9926053";
            WWW w =new WWW(url);
            yield return w;
            if (w!=null)
            {
                Debug.Log(w.text);
            }
            StopAllCoroutines();
        }

    参考
    Unity官方案例精讲的协程章节,下载地址在这里

    展开全文
  • 本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,...
  • Unity3D入门到精通-(3)Unity资源管理精讲 有10多年的软件开发...

    订阅后:请点击此处观看视频课程

     

    视频教程-Unity3D入门到精通-(3)Unity资源管理精讲-Unity3D

    学习有效期:永久观看

    学习时长:254分钟

    学习计划:5天

    难度:

     

    口碑讲师带队学习,让你的问题不过夜」

    讲师姓名:张刚

    技术经理

    讲师介绍:有10多年的软件开发和管理经验,熟悉Unity3D,Unreal,OGRE等多款3d游戏引擎。并参与多款游戏的研发,熟悉网络游戏开发的整个流程和技术细节。授课紧贴实际应用,思路清晰

    ☛点击立即跟老师学习☚

     

    「你将学到什么?」

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

     

    「课程学习目录」

    第1章:Resources目录与StreamingAssets目录
    1.Unity资源管理简介
    2.Resources资源管理
    3.StreamingAssets资源管理1
    4.StreamingAssets资源管理2
    第2章:Unity4.x AssetBundle资源管理
    1.更新资源流程
    2.资源打包
    3.依赖资源打包
    4.场景资源打包
    5.AssetBundle资源更新
    6.AssetBundle通过WWW加载及内存分析
    7.AssetBundle本地加载及内存分析
    8.AssetBundle内存优化
    9.AssetBundle依赖资源内存优化
    第3章:Unity5.x AssetBundle资源管理
    1.AssetBundle资源打包
    2.Assetbundle资源加载

     

    7项超值权益,保障学习质量」

    • 大咖讲解

    技术专家系统讲解传授编程思路与实战。

    • 答疑服务

    专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。

    • 课程资料+课件

    超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)

    • 常用开发实战

    企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。

    • 大牛技术大会视频

    2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。

    • APP+PC随时随地学习

    满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。

     

    「什么样的技术人适合学习?」

    • 想进入互联网技术行业,但是面对多门编程语言不知如何选择,0基础的你
    • 掌握开发、编程技术单一、冷门,迫切希望能够转型的你
    • 想进入大厂,但是编程经验不够丰富,没有竞争力,程序员找工作难。

     

    「悉心打造精品好课,5天学到大牛3年项目经验」

    【完善的技术体系】

    技术成长循序渐进,帮助用户轻松掌握

    掌握Unity3D知识,扎实编码能力

    【清晰的课程脉络】

    浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。

    【仿佛在大厂实习般的课程设计】

    课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。

     

    「你可以收获什么?」

    对使用unity开发网络游戏和VR软件时,能合理地管理资源,熟悉Assetbundle资源更新流程,熟悉AssetBundle资源所占内存,并能对Assetbundle资源合理利用

     

    展开全文
  • 本次系列课程的目标是让Unity3D初学者掌握Unity3d的性能优化技术,根据Profiler工具监控的CPU,GPU,内存等数据(CPU执行时间,GPU执行时间,内存大小等),分析程序的性能瓶颈,从而提高程序性能。 适合对象:Unity...
  • Unity3D入门到精通-(2)Profiler工具精讲 有10多年的软件开...

    订阅后:请点击此处观看视频课程

     

    视频教程-Unity3D入门到精通-(2)Profiler工具精讲-Unity3D

    学习有效期:永久观看

    学习时长:79分钟

    学习计划:2天

    难度:

     

    口碑讲师带队学习,让你的问题不过夜」

    讲师姓名:张刚

    技术经理

    讲师介绍:有10多年的软件开发和管理经验,熟悉Unity3D,Unreal,OGRE等多款3d游戏引擎。并参与多款游戏的研发,熟悉网络游戏开发的整个流程和技术细节。授课紧贴实际应用,思路清晰

    ☛点击立即跟老师学习☚

     

    「你将学到什么?」

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的性能优化技术,根据Profiler工具监控的CPU,GPU,内存等数据(CPU执行时间,GPU执行时间,内存大小等),分析程序的性能瓶颈,从而提高程序性能。 适合对象:Unity初学开发者,Unity中级开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

     

    「课程学习目录」

    1.Profiler工具简介
    2.CPU性能分析1
    3.CPU性能分析2(垂直同步)
    4.CPU性能分析3
    5.内存性能分析
    6.GPU性能分析
    7.性能优化建议

     

    7项超值权益,保障学习质量」

    • 大咖讲解

    技术专家系统讲解传授编程思路与实战。

    • 答疑服务

    专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。

    • 课程资料+课件

    超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)

    • 常用开发实战

    企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。

    • 大牛技术大会视频

    2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。

    • APP+PC随时随地学习

    满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。

     

    「什么样的技术人适合学习?」

    • 想进入互联网技术行业,但是面对多门编程语言不知如何选择,0基础的你
    • 掌握开发、编程技术单一、冷门,迫切希望能够转型的你
    • 想进入大厂,但是编程经验不够丰富,没有竞争力,程序员找工作难。

     

    「悉心打造精品好课,2天学到大牛3年项目经验」

    【完善的技术体系】

    技术成长循序渐进,帮助用户轻松掌握

    掌握Unity3D知识,扎实编码能力

    【清晰的课程脉络】

    浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。

    【仿佛在大厂实习般的课程设计】

    课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。

     

    「你可以收获什么?」

    通过对本课程的学习,能熟练的解决游戏开发过程中的CPU,GPU,内存等性能瓶颈

     

    展开全文
  • Unity3D协程-基础篇

    2019-07-18 10:45:05
    本课程为Unity3D协程技术精讲中的基础部分,协程是UnityEngine技术里面为常用且设计为精髓的技术;基础部分主要讲解协成的前世今生,其中包括设计模式、实现模式、验证模式的递进式推进过程让同学们掌握协程原理与...
  • Unity官方教学资源

    2020-07-30 23:33:20
    Unity官方教学资源,来自于Unity官方案例精讲,方便新手学习
  • (上)部分主要介绍了素材的添加以及基本的移动与涉及功能,这部分关注事件的实现(如碰撞检测)。 传送门: 太空射击(Space Shooter)流程介绍与代码分析(上) 太空射击(Space Shooter)流程介绍与代码分析...
    (上)部分主要介绍了素材的添加以及基本的移动与涉及功能,这部分关注事件的实现(如碰撞检测)。

    传送门:
    太空射击(Space Shooter)流程介绍与代码分析(中)

    6.边界的设定
    在上述过程中,若一直发射子弹,在Hierarchy中会一直出现子弹的进程,造成不必要的内存开销。因此我们需要设定一个区域,用以检测子弹是否出了边界并将出边界的子弹删除。

    为了实现边界的设定,我们采用gameObject中的Cube进行边界模拟,新建一个Cube,将Cube的Size设置成与背景相同的大小,并将Position参照Background进行设置。

    之后,为边界新建一个脚本,用以销毁边界外的子弹,代码如下
    using UnityEngine;
    using System.Collections;
    public class DestroyByBoundary : MonoBehaviour {
    void OnTriggerExit(Collider other)
        {
            Destroy (other.gameObject);
        }
    }
    即可达成目标。

    7.添加陨石
    陨石的添加与子弹类似,新建一个gameObject(命名为Asteriod)再将model中的陨石拖入Asteriod,对Asteriod添加rigidbody和Capsule Collider


    添加完毕后,为了使陨石效果逼真,加入旋转的功能,新建一个Script实现该功能
    输入
    using UnityEngine;
    using System.Collections;
    public class RandmRotation : MonoBehaviour {
        public float tumble = 5f;
        // Use this for initialization
        void Start () {
            rigidbody.angularVelocity = Random.insideUnitSphere * tumble; //陨石的旋转是随机的
        }
        
    }
    即可完成陨石的旋转操作。陨石的运动可以参照子弹的运动脚本,将速度设置为负值即可。


    同理,我们可以多设置几组陨石,在model中可见,方法同上。创建完毕后,将3个陨石模型放入Prefabs中。


    8.子弹与陨石碰撞
    为陨石创建一个脚本
    输入
    using UnityEngine;
    using System.Collections;
    public class DestroyByCotact : MonoBehaviour {
        void OnTriggerEnter (Collider other)
        {
            Destroy (other.gameObject);
            Destroy (this.gameObject);
        }
    }
    即可
    但上述代码存在问题,即陨石已经在Boundary中,在产生陨石的瞬间就能触发OnTriggerEnter,因此直接就被销毁。因此我们需要设置不同的Boundary以解决以上问题。

    并将代码修改为
            if (other.gameObject.tag == "Boundary")     //若陨石在边界之中,什么也不做。
            {
                return;
            }
    即可,此时子弹就可正常与陨石进行碰撞并销毁。需保证子弹和陨石在同一个2D平面上
    为了保证游戏反馈,我们需要添加爆炸效果让玩家有一个直观的视觉体验。因此对代码进行修改如下。
    using UnityEngine;
    using System.Collections;
    public class DestroyByCotact : MonoBehaviour {
        
        public GameObject explosion;
        public GameObject playerExplosion;
        
        void OnTriggerEnter (Collider other)    //只要打到了陨石,执行如下操作
        {
            if (other.gameObject.tag == "Boundary")     //如果陨石碰到边界,什么也不做
            {
                return;
            }
            if (other.gameObject.tag == "Player")     //如果碰撞的是玩家,销毁飞机
            {
                Instantiate (playerExplosion, this.transform.position, this.transform.rotation);
            }
            Destroy (other.gameObject);
            Destroy (this.gameObject);
            Instantiate (explosion, this.transform.position, this.transform.rotation);    //销毁陨石
        }
    }
    即可,注意要将playership的Tag改成别的,方便脚本中判断。



    将两个爆炸素材带入即可实现


    9.随机创建陨石
    打开GameController,将控制代码如下写入,实现随机产生陨石的效果。
    using UnityEngine;
    using System.Collections;
    public class GameController : MonoBehaviour {
        public Vector3 spawnValue;    
        public GameObject[] hazards;    
        // Use this for initialization
        void Start () {
            Debug.Log("Spaceshooter begins!!!");
        }
        
        // Update is called once per frame
        void Update () {
            if(Random.value<0.1)    //Random.value随机产生0~1的数,小于0.1表示十分之一的概率出现陨石
            Spawn ();
        }
        void Spawn()
        {
            GameObject o = hazards [Random.Range (0, hazards.Length)];    //从3个陨石model中任选一个
            Vector3 p = new Vector3 (Random.Range (-10, -2), spawnValue.y, spawnValue.z);//陨石随机出现的区域要在边界内,用Random.Range (-10, -2)限定
            Quaternion q = Quaternion.identity;  //i.e (0,0,0)
            Instantiate (o, p, q);
        }
    }
    即可,并将3种陨石放入hazards数组内,即可实现。


    但此时的陨石会互相发生碰撞并发生爆炸,应改进。

    10.创建一波又一波的陨石
    这部分内容主要是在代码中进行修改,直接上代码
    using UnityEngine;
    using System.Collections;
    public class GameController : MonoBehaviour {
        public Vector3 spawnValue;    
        public GameObject[] Hazards;    
        public int numPerWave  = 10;
        public float gameStartTime = 2f;    //游戏开始的等待时间
        public float waitTime = 1f;    //每个陨石出现间隔
        public float waveTime = 4f;    //每一波的间隔
        // Use this for initialization
        void Start () {
            Debug.Log("Spaceshooter begins!!!");
            StartCoroutine (SpawnWave ());
        }
        
        // Update is called once per frame
        void Update () {
    //        if(Random.value<0.1)
    //        Spawn ();
        }
        IEnumerator SpawnWave()
        {
            yield return new WaitForSeconds(gameStartTime);
            while (true)    //无限循环
            {
                for (int i=0; i<10; i++)    //for循环实现每一秒出一个,10个为一波
                {
                    Spawn ();
                    yield return new WaitForSeconds (waitTime);
                }
                yield return new WaitForSeconds(waveTime);    //出完一波后的等待
            }
        }
        void Spawn()
        {
            GameObject o = Hazards [Random.Range (0, Hazards.Length)];   
            Vector3 p = new Vector3 (Random.Range (-10, -2), spawnValue.y, spawnValue.z);
            Quaternion q = Quaternion.identity;  //i.e (0,0,0)
            Instantiate (o, p, q);
        }
    }
    即可



    至此,基本功能已实现,为了提高游戏的即时反馈,我们需要对游戏进行完善,在(下)中进行介绍。
    展开全文
  • 游戏封面 B站游戏视频:体感游戏 热狗vs篮球(CXK)kinect连接unity3d入门demo 游戏截图 ... B站熟肉教学视频:unity3d官方案例_太空射击【unity官方案例精讲】 我的游戏视频:体感游戏...
  • Unity C#中,变量声明形式为: 类型 变量名 /*=初始值*/ >如果没有为变量赋初值,编译器默认会为变量赋默认值 float类型变量 -> 0.0f 引用类型(Referrence type)的变量 -> null Unity常用类型的...
  • Unity3d学习——基础篇

    2018-06-06 23:55:06
    最新的Unity5支持两种编程语言,C#和JavaScript,其中JavaScript语言更容易上手,C#是面向对象的编程语言,语法与C++、Java较为接近,在编程思想上更符合Unity引擎的原理。Unity C#语言基础知识:变量、数组与函数:...
  • 1.3.1语句 语句类型略 #注意这个 const double pi = 3.1415926; //常量声明语句 #选择语句中if条件语句的 if ,else if,else 只选择一种判断分支 选择语句中switch case条件语句一般用于根据值类型(bool、int...
  • Unity3D入门到精通-(1)网络模块精讲 有10多年的软件开发和管理经验...
  • unity 的 asset store里面 搜索 Unity technologies 就可以找到很多 Unity官方的教程素材,里面的教程 包含 了几乎 各种类型 各种素材 的内容。非常值得推荐。里面的 教材里面的资源 都是可以使用的。
  • Unity潜行游戏

    2020-07-21 09:59:13
    Unity潜行游戏开发文档,做案例精讲的一点整理,以供大家参考借鉴。
1 2 3 4 5
收藏数 99
精华内容 39
关键字:

unity3d官方案例精讲