精华内容
下载资源
问答
  • 最近跑酷游戏比较流行,开发教程也很多,但是大部分都是不太详细,这篇文章就带着大家一步一步开发出来一个跑酷类的游戏,教程比较基础,适合大部分Unity开发的初学者。 还有就是,此专栏已经开通收费,里面整合的都...

    推荐阅读

    一、前言

    最近跑酷游戏比较流行,开发教程也很多,但是大部分都是不太详细,这篇文章就带着大家一步一步开发出来一个跑酷类的游戏,教程比较基础,适合大部分Unity开发的初学者。
    还有就是,此专栏已经开通收费,里面整合的都是小游戏的开发教程,想要学习Unity开发游戏的,都可以订阅一下。
    如果文章出现什么问题,就及时联系我

    效果图
    在这里插入图片描述

    二、下载链接

    源工程:
    https://gitee.com/itMonon/Game_Parkour
    模型资源:
    https://gitee.com/itMonon/Unity-plugin/tree/master/Menu/Unity3D-ParkourDemoAssets

    三、教程

    在教程开始之前,我们分析一下跑酷类游戏制作思路。
    首先是道路和障碍物,我们可以先设置三段道路,然后障碍物随机生成
    道路中间有抵达点,角色到达抵达点判断是否将后面的道路移动到前面接起来。
    首先到达第一段的抵达点,肯定是不切换
    到达第二段的抵达点,将1号路段移动到最前面
    到达第三段的抵达点,将2号路段移动到最前面
    循环往复,无穷尽也
    然后是主角的移动脚本,躲避障碍物,移动位置固定三个点,可以跳,可以铲地
    主角碰到障碍物就挂,游戏结束

    1、新建项目

    博主的Unity版本是Unity5.6.1f1,推荐大家使用我这个版本,或者其他的5.6.x版本,不然可能会出现各种各样奇奇怪怪的问题。
    在这里插入图片描述
    文件目录的话就按照我这个目录来,比较清晰明了。

    2、导入资源

    资源已经上传到Github,需要的可以下载

    https://github.com/764424567/Unity-plugin/tree/master/Menu/Unity3D-ParkourDemoAssets
    在这里插入图片描述
    在这里插入图片描述

    3、处理动画资源

    在这里插入图片描述
    可以看到所有的动画文件都有。
    接着我们就可以新建一个Animator Controller文件来管理动画文件。
    在这里插入图片描述
    命名随意。
    在这里插入图片描述
    接着我们将动画剪辑拖到Animator处理面板中:
    在这里插入图片描述
    默认状态是run,然后有jump 、slide、idle
    在这里插入图片描述
    接着就是“Take Transition”将run和jump 以及 run 、slide、idle连下线。

    设置两个bool值,来控制动画的切换:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    接下来我们就可以在场景中看一下动画效果了:
    在这里插入图片描述

    4、处理路段模型

    在这里插入图片描述
    首先我们找到导入的资源SimpleRoadwork,里面有一个Demo场景,点进去可以看一下各类模型:
    在这里插入图片描述
    在Prefabs文件夹中,可以找到我们需要的各类模型,包括路面、路标、障碍物:
    在这里插入图片描述
    接下来,我们就设计一下路面:
    在这里插入图片描述
    在这里插入图片描述
    接着摆放路标:
    在这里插入图片描述
    接着摆放障碍物:
    在这里插入图片描述
    因为障碍物我们要后期自动生成,现在就可以先隐藏起来。
    在这里插入图片描述
    然后设置到达点(到达点的目的是当角色到达这个位置的时候,自动切换路线):
    在这里插入图片描述
    隐藏它的Mesh Renderer ,将BoxCollider IsTrigger设置成true:
    在这里插入图片描述
    路段就完成了:

    在这里插入图片描述
    整个目录如下:
    在这里插入图片描述
    不会摆放也没有关系,我已经设置好了,用我的也行。

    5、主角模型处理

    在这里插入图片描述

    明显是有点大,我们给它同比例缩小一下:
    在这里插入图片描述
    在这里插入图片描述
    接着设置一下摄像机的视角:

    在这里插入图片描述
    在这里插入图片描述

    6、生成障碍物

    新建脚本Control_Scenes.cs
    我们首先来生成障碍物:

    using UnityEngine;
    
    public class Control_Scenes : MonoBehaviour
    {
        public GameObject[] m_ObstacleArray;
        public Transform[] m_ObstaclePosArray;
    
        void Start()
        {
            Spawn_Obstacle(1);
        }
    	
    	//生成障碍物
    	public void Spawn_Obstacle(int index)
        {
            //销毁原来的对象
            GameObject[] obsPast = GameObject.FindGameObjectsWithTag("Obstacle" + index);
            for (int i = 0; i < obsPast.Length; i++)
            {
                Destroy(obsPast[i]);
            }
            //生成障碍物
            foreach (Transform item in m_ObstaclePosArray[index])
            {
                GameObject prefab = m_ObstacleArray[Random.Range(0, m_ObstacleArray.Length)];
                Vector3 eulerAngle = new Vector3(0, Random.Range(0, 360), 0);
                GameObject obj = Instantiate(prefab, item.position, Quaternion.Euler(eulerAngle));
                obj.tag = "Obstacle" + index;
            }
        }
    }
    
    

    将脚本挂在Control_Scenes对象上:
    将Prefab文件夹里面的模型拖入到ObstacleArray对象数组卡槽中
    将隐藏以后的障碍物拖入到ObstaclePosArray对象数组卡槽中
    在这里插入图片描述
    添加Tag:
    在这里插入图片描述
    运行看一下:
    在这里插入图片描述

    7、路段切换

    我们接着打开Control_Scenes.cs
    添加函数:

    void Start()
    {
            //Spawn_Obstacle(1);
            Change_Road(1);
    }
    public void Change_Road(int index)
    {
            if (m_ISFirst && index == 0)
            {
                m_ISFirst = false;
                return;
            }
            else
            {
                int lastIndex = index - 1;
                if (lastIndex < 0)
                    lastIndex = 2;
                m_RoadArray[lastIndex].transform.position = m_RoadArray[lastIndex].transform.position - new Vector3(150, 0, 0);
                Spawn_Obstacle(lastIndex);
            }
    }
    

    PS:这里解释一下代码,怎么切换的呢
    举个例子,角色跑到了第二段,那么第一段要移动到第三段后面隔一个路段长度的距离,接下来画个图:
    在这里插入图片描述
    那么为啥x轴减去150。这是因为我发现这三条路段的距离都差了50,坐标轴是负轴,所以就减去了150。
    在这里插入图片描述

    我们可以测试一下效果:
    在这里插入图片描述
    但是仅仅这样是不够的,我们还需要在角色到达抵达点的时候,切换路线,当然第一段路不用切换,因为再切就没了。。
    这个在我们写完角色移动以后再补充。

    8、角色移动

    新建脚本:Control_Player.cs
    说明一下:因为我们设定的三条道,所以角色只能在三条道里面切换。那么只需要改变角色的z值就可以了。如果角色在最左边,那么只能往右移动,同理在最右边,只能往左移动,在中间两边都可以移动。

    接着我们就可以看一下z轴的值:
    中间:
    在这里插入图片描述
    在这里插入图片描述

    左边:
    在这里插入图片描述
    在这里插入图片描述
    右边:
    在这里插入图片描述
    在这里插入图片描述
    代码:

    using UnityEngine;
    
    public class Control_Player : MonoBehaviour
    {
        //前进速度
        public float m_ForwardSpeeed = 7.0f;
        //动画组件
        private Animator m_Anim;
        //动画现在状态
        private AnimatorStateInfo m_CurrentBaseState;
    
        //动画状态参照
        static int m_jumpState = Animator.StringToHash("Base Layer.jump");
        static int m_slideState = Animator.StringToHash("Base Layer.slide");
    
        // Use this for initialization
        void Start()
        {
            m_Anim = GetComponent<Animator>();
        }
    
        // Update is called once per frame
        void Update()
        {
            transform.position += Vector3.left * m_ForwardSpeeed * Time.deltaTime;
            m_CurrentBaseState = m_Anim.GetCurrentAnimatorStateInfo(0);
            if (Input.GetKeyDown(KeyCode.W))
            {
                m_Anim.SetBool("jump", true);
            }
            else if (Input.GetKeyDown(KeyCode.S))
            {
                m_Anim.SetBool("slide", true);
            }
            else if (Input.GetKeyDown(KeyCode.A))
            {
                Change_PlayerZ(true);
            }
            else if (Input.GetKeyDown(KeyCode.D))
            {
                Change_PlayerZ(false);
            }
            if (m_CurrentBaseState.fullPathHash == m_jumpState)
            {
                m_Anim.SetBool("jump", false);
            }
            else if (m_CurrentBaseState.fullPathHash == m_slideState)
            {
                m_Anim.SetBool("slide", false);
            }
        }
    
        public void Change_PlayerZ(bool IsAD)
        {
            if (IsAD)
            {
                if (transform.position.z == -14.7f)
                    return;
                else if (transform.position.z == -9.69f)
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, -14.7f);
                }
                else
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, -9.69f);
                }
            }
            else
            {
                if (transform.position.z == -6.2f)
                    return;
                else if (transform.position.z == -9.69f)
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, -6.2f);
                }
                else
                {
                    transform.position = new Vector3(transform.position.x, transform.position.y, -9.69f);
                }
    
            }
        }
    }
    
    

    键盘WSAD控制上跳,下滑,左右移动等操作。现在就可以去试试啦。
    在这里插入图片描述

    但是,有一点哈,角色怎么越跑越远离开了我们呢,因为,还没有写摄像机跟随脚本,接下来继续吧。

    9、摄像机跟随

    新建脚本Control_Camera.cs

    using UnityEngine;
    
    public class Control_Camera : MonoBehaviour
    {
    	//间隔距离
    	public float m_DistanceAway = 5f;
    	//间隔高度
    	public float m_DistanceHeight = 10f;
    	//平滑值
    	public float smooth = 2f;               
    	//目标点
    	private Vector3 m_TargetPosition;      
    	//参照点
    	Transform m_Follow;        
    
    	void Start()
    	{
    		m_Follow = GameObject.Find("Player").transform;
    	}
    
    	void LateUpdate()
    	{
    		m_TargetPosition = m_Follow.position + Vector3.up * m_DistanceHeight - m_Follow.forward * m_DistanceAway;
    		transform.position = Vector3.Lerp(transform.position, m_TargetPosition, Time.deltaTime * smooth);
    	}
    }
    
    

    OK 摄像机跟着Player跑起来了

    10、碰撞检测

    我们需要不停的躲避障碍物,一旦碰撞到障碍物就dead了
    我们首先修改障碍物的碰撞器属性:
    在这里插入图片描述
    Mesh Collider : Is Trigger=true
    在这里插入图片描述
    我们给Player加上刚体和碰撞体:
    在这里插入图片描述
    注意要勾上Is Trigger

    打开Control_Player.cs脚本:

    //游戏结束
    bool m_IsEnd = false;
    void OnGUI()
    {
            if (m_IsEnd)
            {
                GUIStyle style = new GUIStyle();
                style.alignment = TextAnchor.MiddleCenter;
                style.fontSize = 40;
                style.normal.textColor = Color.red;
                GUI.Label(new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100), "你输了~", style);
            }
    }
    void OnTriggerEnter(Collider other)
        {
            if (other.gameObject.name == "Vehicle_DumpTruck" || other.gameObject.name == "Vehicle_MixerTruck")
            {
                m_IsEnd = true;
                m_ForwardSpeeed = 0;
                m_Anim.SetBool("idle", true);
            }
        }
    

    11、切换道路

    在第七章的时候就已经写好了道路切换,但是一直没有讲到碰撞检测,那么现在我们就结合碰撞检测,检测到抵达点然后切换道路吧

    我们首先找到三个抵达点:MonitorPos
    然后改名叫做MonitorPos0 MonitorPos1 MonitorPos2
    在这里插入图片描述
    修改一下BoxCollider的Is Trigger属性:
    在这里插入图片描述
    修改Control_Player.cs的代码:

     //场景控制对象
    Control_Scenes m_ControlScenes;
    void Start()
    {
            m_Anim = GetComponent<Animator>();
            m_ControlScenes = GameObject.Find("Control_Scenes").GetComponent<Control_Scenes>();
    }
    void OnTriggerEnter(Collider other)
    {
            if (other.gameObject.name == "Vehicle_DumpTruck" || other.gameObject.name == "Vehicle_MixerTruck")
            {
                m_IsEnd = true;
                m_ForwardSpeeed = 0;
                m_Anim.SetBool("idle", true);
            }
            if (other.gameObject.name == "MonitorPos0")
            {
                m_ControlScenes.Change_Road(0);
            }
            else if (other.gameObject.name == "MonitorPos1")
            {
                m_ControlScenes.Change_Road(1);
            }
            else if (other.gameObject.name == "MonitorPos2")
            {
                m_ControlScenes.Change_Road(2);
            }
    }
    
    展开全文
  • Unity开发环境搭建

    千次阅读 2018-11-12 17:56:51
    Unity开发环境搭建序言Unity 序言 工欲善其事必先利其器,想做开发,肯定得先选号工具,我们来看下,你需要什么:Unity和Microsoft Visual Studio,怎么样?简单吧!就两样工具你就能开发了,这简单的背后,是强大的...

    Unity开发环境搭建

    序言

    工欲善其事必先利其器,想做开发,肯定得先选号工具,我们来看下,你需要什么:Unity和Microsoft Visual Studio,怎么样?简单吧!就两样工具你就能开发了,这简单的背后,是强大的技术团队的支持,是工具的高度集成。废话不多说,我们来看看如何安装他们两个

    Unity

    Unity指的是Unity编辑器,我们先用百度搜一下Unity关键词,看看出来的效果:
    百度真会玩啊!
    以上是百度搜出来的结果,如果你是个新手,你绝对会点第一个,当然我可能低估你了,好吧你也会点第二个。但是,就算你把这几个全都点开,你也会很失望,或者很迷茫,因为这根本不是Unity的官网,前面几个,我用箭头指出来了,都是广告,百度想挣钱,我管不了,但你一定要擦亮你的眼睛,看清楚,这是广告,最后一个,是个电影……
    这才是Unity
    往下翻,箭头所指,才是Unity。打开它:
    在这藏着呢
    翻到最下面,下在这里有个Unity,点开它
    选不要钱的!
    这里有三个版本,我们选择个人版(不要钱啊!)
    先点同意按钮才能点
    勾选上面我确认xxx以后,两个按钮才高亮可选,你两个都下载下来也行,下载随便一个也行,安装步骤我就不说了,只是别安装到C盘和安装路径别有中文就行了。
    另外,有的同学想下载旧版本,咋办?翻到最下面:
    旧版本在这
    旧版本
    上面是版本系列,左侧是版本号,右侧可选下载的内容,如果你是新手,你就下载安装程序,然后让它给你把其他的全下载了,如果你是熟手,你就选择下载就行,如果下载编辑器,选64位的,如果你是32位电脑,嗯……还是换电脑吧。Unity就说到这,我们来看看VS吧
    上面说的Microsoft Visual Studio就是VS的全称,是微软开发的,宇宙最强IDE,巨牛逼,百度搜索VS2017
    百度果然不敢做VS的广告
    选第一个,出来微软的界面:
    社区的足够了,主要是免费的
    选择社区版,VS2017有个好处,集成的非常好,这个下载下来是一个下载助手,他会引导你下载其他的东西,打开以后,是类似于这样的:
    安装界面
    我已经安装了,可能和你的不一样,大致需要选择的就是上面三个,其中,.NET自不必说,C++呢,为了以后的许多动态库的开发,通用的是为了MR的开发。还有下面有一个Unity的,不用选,因为我们已经提前下载安装好Unity了。
    好了,漫长的等待之后,VS应该就安装好了,打开Unity,这里还有最后一个问题,就是破解,在此我不放出破解的步骤了,如果需要单独找我。其实破解不破解的吧,都行,你只要登录了就行,还有VS也是,登录了一般都能用。
    最后附上一段Unity的Hello World

    // An highlighted block
      void Start()
      {
    	  Debug.Log("Hello World");	
      }
    
    展开全文
  • Unity开发VSCode的使用

    千次阅读 2019-07-10 16:23:26
    Unity开发使用VSCode需要安装的一些插件

    Unity开发使用VSCode需要安装的一些插件

      一:插件
      1.C#;
      2.Debugger for Unity;
      3.代码英文拼写检查:Code Spell Checker;
      4.Chinese (Simplified) Language Pack for Visual Studio Code中文语言包;
      5.C# XML Documentation Comments,用于方法用途的注释(操作方式和VS一样)三个/;
      ;6.vscode-lua-format,用于lua的标准格式,格式化快捷键Shift Alt F;

      二:快捷键
      1.Ctrl -:缩小屏幕20%,Ctrl +:放大屏幕20%;
      2.F12:导航到定义,Alt ←:回到上次光标的位置,Alt→:退回到上一次的Alt ←光标所在的位置;
      3.F2:重命名;
      4.Shift Alt F:格式化文档;
      5:Ctrl / :单行注释;
      6.Alt Shift A:多行注释,(关闭)和取消注释(打开)所选代码段。嗯哼,和Unity激活隐藏物体一样的快捷键,不过确实比VS的Ctrl K C/U好用多了;
      7.Ctrl S:保存,Ctrl Alt S另存,Ctrl Shift S全部保存;
      8.Ctrl Shift F:全局查找,在Lua脚本中Debug信息时无法直接点击到达这个信息位置,我们可以通过全局查找找到,但是我点击这个快捷键并没有作用,也可以点击左侧的第二个图标(搜索)进行全局查找;
      9.Ctrl F:当前文档查找;
      三:外观
    1.文件→首选项→颜色主题:里面有很多自带的主题,个人用的Visual Studio的默认字体。
    2.字体:Fira Code这个还不错;
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • Unity开发过程中常常因为操作导致Unity奔溃,再次打开是会出现Unity bug reporter之后无论这么样你都再也打不开你的工程了。无论你重装多少次还是打不开你原来的那个工程。 这个时候其实不用重启重装软件,只需要把...

    Unity开发过程中常常因为操作导致Unity奔溃,再次打开是会出现Unity bug reporter之后无论这么样你都再也打不开你的工程了。无论你重装多少次还是打不开你原来的那个工程。

    这个时候其实不用重启重装软件,只需要把你的工程中的libray文件删掉就行了。这个文件是初次打开项目生成的,再次打开会重新生成。

    展开全文
  • Unity开发HTC vive 入门

    千次阅读 2017-04-15 16:35:11
    Unity开发HTC vive 入门一、手柄按钮 http://gad.qq.com/article/detail/7192026 Unity开发HTC vive 二、操作GUI http://gad.qq.com/article/detail/7192151 Unity开发HTC vive 三、远处拖动3D物体 ...
  • Unity开发中使用 Rider

    千次阅读 2019-04-14 15:00:06
    Unity开发中使用Rider 环境: Windows Unity 2017 JetBrains.Rider-2018.3.4 作为Windows和Visual Studio的拥趸,我是多么推崇Visual Studio,开发Unity使用,开发工具软件也使用。不过自从升级到Unity 2017,Visual...
  • Unity开发HTC VIVE

    千次阅读 2016-11-30 14:55:08
    最近在用Unity开发htc vive 的应用,遇到一些问题,在这里记录下吧. unity开发htc vive主要用的是SteamVR和VRTK两个插件,两个都可以在Asset Store上下载,但是VRTK主要更新在Github上,想用最新的话可以去Github下载,...
  • Unity开发教程学习路线

    千次阅读 2017-02-21 17:44:01
    资料源自:... Unity开发课程体系 第一阶段:Unity开发基础 Unity开发基础 C#语言基础 C#基本数据类型 C#分支结构 C#循环和一维数组 C#二维数组和常用算法 C#枚举和结构体 C#面向对象 C#类和方法
  • 使用unity开发android平台的游戏时候,大部分可能都需要加入一些广告,收费等一些额外的功能来进行游戏扩展,只要unity和android代码能够相互调用那一切都有希望。 当然工具必不可少,首先安装android sdk和最新版...
  • 承接基于unity开发

    千次阅读 2014-10-08 11:44:32
    承接基于unity开发,虚拟现实 ,增强现实 虚拟仿真
  • 使用unity开发答题系统

    千次阅读 2019-01-16 22:47:08
    该项目的代码没有什么坑,工程下载下来直接...该系统使用unity开发的,可用于SLG游戏开场问答,考试选择题问答等,如需要扩展的不需要改多少代码,主要改下json文件和简单的逻辑即可,一会会详细说明,先上图。 ...
  • Vuforia unity开发摄像头问题

    千次阅读 2016-11-02 20:10:00
    项目一直在赶进度,写博的时间越来越少了~从事Unity开发也快两个月了,AR方向~ 使用的是高通家的SDK Vuforia。。。从工程融合一直到对unity和Vuforia的深层次的开发,新东西,毕竟坑多。。国内做AR开发的没有自家的...
  • Unity开发学习路线在哪里【蓝鸥Unity学习路线】
  • 蓝鸥Unity开发基础——List

    千次阅读 2016-09-06 09:07:45
    蓝鸥Unity开发基础——List
  • 蓝鸥Unity开发基础——ArrayList

    千次阅读 2016-09-05 16:20:12
    蓝鸥Unity开发基础——ArrayList
  • 使用Mac系统中的unity开发Kinect如何配置驱动,原来的Kinect for windows的unitypackage应该还可以照样使用吧,使用 Mac系统开发可以照样的骨骼、深度等数据吗?请大神赐教,谢谢!
  • 使用Unity开发GearVR应用

    千次阅读 2016-12-22 11:04:08
    使用Unity开发GearVR应用 上一章我们介绍了如何运用Unity3D开发Oculus Rift应用,当然,这个便宜且强大的游戏引擎也可以用于GearVR的应用开发,这时我们需要用到Oculus Mobile SDK(移动端SDK)。配置Unity开发...
  • unity开发htc VR实现瞬移功能

    千次阅读 2017-09-26 15:43:53
    unity开发htc vive 实现曲线瞬移
  • 这套教程涵盖了Unity Mesh编程、模拟水算法(water simulations)、方块移动算法(marching-cubes)等等。这是一套比较有深度的教程,可能需要你了解一些Unity和C#相关的知识。 二、原文链接 原文出处:公众号墙外的...
  • 【Unity3D开发小游戏】《战棋小游戏》Unity开发教程

    万次阅读 多人点赞 2019-03-15 10:17:37
    一、前言 这次想要做的一个小游戏,或者说一个小Demo,其实是一个简单且传统的战棋战斗场景。初步的设计是:在2D世界里创建一张由六边形地块...我使用的Unity版本是2018.2.7,但是其实并没有用到2018的任何新功能...
  • Unity开发WebGL过程中,常常因为需求必须要与前端进行通信、对接,如何实现呢? 前言 在Unity老版本中,可以用Application.ExternalCall()方法,在2018及以上版本,该方法已经弃用掉,由新的方法来代替。这里不...
  • Unity开发中的各种职位

    千次阅读 2017-08-10 14:26:15
    客户端 : unity开发人员在开发过程中其实是充当客户端业务的作用UI: 负责制作软件界面中用到的所有的UI模型(美工) :负责制作场景中用到的所有3D模型产品: 这个职位在虚拟现实/AR/APP中出现,主要是替老板策划,...
  • Unity开发】GameObject

    千次阅读 2014-03-12 13:27:14
    对GameObject学习能够让我们更好的进行Unity开发,今天我们就来学习一下GameObject这个概念——   在我们的Unity游戏中每一个对象都是一个GameObject,但是没有我们的指示,这些GameObject对象不会自己做任何...
  •  UnityUnity Technologies开发,创建三维视频游戏,建筑可视化及实时三维动画等互动内容的多平台的综合性开发工具。  编辑器运行平台:Windows 、 Mac OS X。  发布平台:Windows、Mac、Wii、iPhone、...
  • 使用unity开发手机游戏时最不方便的一点是,unity默认不会帮你处理返回按钮的功能。但这个功能确实必不可少,就算是单个场景也是需要通过返回按钮退出应用的。无奈只能自己写一个~~~~ 首先写一个单例,挂在第一个...
  • 附注:上一篇文章:《Unity开发Android游戏(二)Hello world!》 ■unity的官方说明如下: Android Remote Android Remote 是一种 Android 应用程序,它允许您使用设备远程控制 Unity 中的工程。这对快速...
  • Unity开发之单例模式中的小坑

    千次阅读 2017-02-26 18:00:10
    Unity开发中单例模式存在的潜在问题
  • 今天我们要用Unity3D做一个植物大战僵尸的仿制版本。为了保持简单,我们将忽略所有花哨的东西,如菜单,多层次或剪裁场景,并专注于在后院与僵尸作战。 以下是游戏的预览: 二、版本 Unity5.0.1f1 三、正文 1.主...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,990
精华内容 9,996
关键字:

unity开发