怎样用Android开发Unityunity 3d游戏开发

&&&&Unity3D游戏开发.pdf
Unity3D游戏开发.pdf
《Unity3D游戏开发》通过实例详细介绍了如何使用Unity 进行游戏开发,书中先简要介绍了Unity 环境搭建、编辑器和GUI 游戏界面相关的知识,接着介绍了如何使用C# 和JavaScript 构建游戏脚本,添加树、草、石头等模型以及键盘事件、鼠标事件和3D 模型动画相关的内容,然后介绍了持久化数据、音频与视频播放等内容,最后以一款第一人称射击类游戏为原型,向读者详细介绍游戏制作的整个过程。
本书适合具备一些JavaScript 与C# 语言基础,并且想快速入门Unity 3D 游戏开发的人员阅读。
宣雨松,网名雨松MOMO。首款入驻美国苹果店数字体育产品GolfSense Unity3D主程,CSDN博客专家,51CTO博客之星,51CTO移动开发论坛版主,Unity圣典开发论坛版主,5年以上移动游戏与软件开发经验。曾经领导与参与的游戏项目包括:GolfSense、新少林寺、天降少女、游龙戏凤西门庆等。
Unity 3D手机游戏开发(套装共2册)(京东特别套装)
第1章  基础知识
1.1  Unity简介
1.2  下载与安装
1.3  游戏界面对比
1.4  购买许可证
1.5  打包与发布
1.6  本章小结
第2章  编辑器的结构
2.1  游戏工程
2.1.1  创建工程
2.1.2  打开工程
2.2  Project视图
2.3  Hierarchy视图
2.4  Inspector视图
2.4.1  简介
2.4.2  平台设定
2.5  Scene视图
2.5.1  视图介绍
2.5.2  移动视图
2.5.3  场景工具
2.5.4  Scene视图控制条
2.6  Game视图
2.6.1  运行游戏
2.6.2  Game视图控制条
2.6.3  导出与导入
2.7  第一个游戏实例(拓展训练)
2.8  本章小结
第3章  GUI游戏界面
3.1  GUI高级控件
3.1.1  Label控件
3.1.2  Button控件
3.1.3  TextField控件
3.1.4  ToolBar控件
3.1.5  Slider控件
3.1.6  ScrollView控件
3.1.7  群组视图
3.1.8  窗口
3.1.9  GUI Skin
3.1.10  自定义风格组件
3.2  GUILayout游戏界面布局
3.2.1  GUI与GUILayout的区别
3.2.2  GUILayoutOption界面布局设置
3.2.3  线性布局
3.2.4  控件偏移
3.2.5  对齐方式
3.2.6  实例--添加与关闭窗口
3.2.7  设置字体
3.2.8  显示中文
3.3  2D贴图与帧动画
3.3.1  绘制贴图
3.3.2  绘制动画
3.3.3  实例--人物移动
3.3.4  实例--用Unity开发2D游戏
3.4  游戏实例--游戏主菜单
3.5  本章小结
第4章  Unity游戏脚本
4.1  MonoDevelop脚本编辑器
4.1.1  编辑器简介
4.1.2  调试
4.2  Unity脚本的生命周期
4.3  利用脚本来操作游戏对象
4.3.1  创建游戏对象
4.3.2  获取游戏对象
4.3.3  添加组件与修改组件
4.3.4  发送广播与消息
4.3.5  克隆游戏对象
4.3.6  脚本组件
4.4  用脚本来控制对象的变换
4.4.1  改变游戏对象的位置
4.4.2  旋转游戏对象
4.4.3  平移游戏对象
4.4.4  缩放游戏对象
4.5  用C#编写脚本
4.5.1  继承MonoBehaviour类
4.5.2  声明变量
4.5.3  调用方法
4.5.4  JavaScript与C#脚本之间的通信
4.6  工具类
4.6.1  时间
4.6.2  等待
4.6.3  随机数
4.6.4  数学
4.6.5  四元数
4.7  游戏实例--小地图的制作
4.8  本章小结
第5章  游戏元素
5.1  游戏地形
5.1.1  创建地形
5.1.2  地形参数
5.1.3  编辑地形
5.1.4  地形贴图
5.2  地形元素
5.2.1  树元素
5.2.2  草与网格元素
5.2.3  其他设置
5.3  光源
5.3.1  点光源(Point Light)
5.3.2  聚光灯
5.3.3  平行光
5.4  天空盒子
5.4.1  Skybox组件
5.4.2  在场景中添加天空盒子
5.5  常用编辑器组件
5.5.1  摄像机
5.5.2  摄像机的类型
5.5.3  定制导航菜单栏
5.5.4  预设
5.5.5  抗锯齿
5.6  游戏实例--摄像机切换镜头
5.7  本章小结
第6章  物理引擎
6.1  刚体
6.1.1  简单使用
6.1.2  物理管理器
6.1.3  力
6.1.4  碰撞与休眠
6.2  碰撞器
6.2.1  添加碰撞器
6.2.2  物理材质
6.3  角色控制器
6.3.1  第一人称
6.3.2  第三人称
6.3.3  控制组件
6.3.4  移动与飞行
6.3.5  碰撞监测
6.4  射线
6.4.1  射线的原理
6.4.2  碰撞监测
6.5  关节
6.5.1  关节介绍
6.5.2  实例--关节组件
6.6  粒子特效
6.6.1  粒子发射器
6.6.2  粒子动画
6.6.3  粒子渲染器
6.6.4  粒子效果实例
6.6.5  布料
6.6.6  路径渲染
6.7  游戏实例--击垮围墙
6.8  本章小结
第7章  输入与控制
7.1  键盘事件
7.1.1  按下事件
7.1.2  抬起事件
7.1.3  长按事件
7.1.4  任意键事件
7.1.5  实例--组合按键
7.2  鼠标事件
7.2.1  按下事件
7.2.2  抬起事件
7.2.3  长按事件
7.3  自定义按键事件
7.3.1  输入管理器
7.3.2  按键事件
7.3.3  按键轴
7.3.4  实例--观察模型
7.4  模型与动画
7.4.1  模型的载入
7.4.2  设置3D动画
7.4.3  播放3D动画
7.4.4  动画剪辑
7.4.5  动画的帧
7.5  GL图像库
7.5.1  绘制线
7.5.2  实例--绘制曲线
7.5.3  绘制四边形
7.5.4  绘制三角形
7.5.5  绘制3D几何图形
7.5.6  线渲染器
7.5.7  网格渲染
7.6  游戏实例--控制人物移动
7.7  本章小结
第8章  持久化数据
8.1  PlayerPrefs类
8.1.1  保存与读取数据
8.1.2  删除数据
8.1.3  实例--注册界面
8.2  自定义文件
8.2.1  文件的创建与写入
8.2.2  文件的读取
8.2.3  实例--读取笑话
8.3  应用程序
8.3.1  创建关卡
8.3.2  切换关卡
8.3.3  截屏
8.3.4  打开网页
8.3.5  退出游戏
8.4  资源数据库
8.4.1  加载资源
8.4.2  创建资源
8.4.3  创建文件夹
8.4.4  移动与复制
8.4.5  删除与刷新
8.4.6  实例--鼠标拖动模型
8.4.7  实例--鼠标拣选
8.5  游戏实例--接受任务
8.6  本章小结
第9章  多媒体与网络
9.1  游戏音频
9.1.1  音频介绍
9.1.2  添加音频
9.1.3  播放音频
9.2  游戏视频
9.2.1  创建视频
9.2.2  播放视频
9.2.3  GUI播放视频
9.3  网络
9.3.1  下载文件
9.3.2  自定义资源包
9.3.3  下载资源包
9.3.4  创建本地服务器
9.3.5  客户端连接服务器
9.3.6  实例--多人聊天服务器端
9.3.7  实例--多人聊天客户端
9.4  游戏实例--简单的网络游戏
9.5  本章小结
第10章  游戏实例--突出重围
10.1  游戏状态机
10.2  游戏界面
10.2.1  游戏主菜单
10.2.2  制作角色血条
10.2.3  制作图片数字
10.3  游戏逻辑
10.3.1  发射子弹与击打目标
10.3.2  敌人的AI
10.3.3  增加敌人预设
10.4  完整的游戏
10.5  本章小结
嵌到我的页面
<input type="text" readonly="true" value="">
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
移动开发下载排行君,已阅读到文档的结尾了呢~~
基于Unity在Android平台上开发游戏的方法,unity android 开发,unity调用android方法,unity开发android游戏,unity android,unity android sdk,unity导出android工程,unity android 交互,unity android 调试,unity发布android
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于Unity在Android平台上开发游戏的方法
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口今天看啥 热点:
[Unity3D]Unity3D游戏开发之塔防游戏项目讲解(上),unity3d游戏开发
&& 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanpei/article/details/&&&&& 大家好,我是秦元培。我参加了CSDN2014博客之星的评选,欢迎大家为我投票,同时希望在新的一年里大家能继续支持我的博客! &&&& &作为2015年的第一篇博客,博主首先想要感谢各位朋友的鼓励和支持,在新的一年里,博主将努力为大家分享更多、更好的游戏开发方面的原创技术文章,希望大家能继续关注和支持博主的博客。那么,今天博主想和大家分享的是一个塔防游戏的项目案例。通常意义上讲,塔防游戏是指一类在地图上建造炮台或者类似建筑物来阻止敌人进攻的策略类游戏。从这个概念中,我们可以快速地抽离出来三个元素,即地图(场景)、敌人、炮台(防守单位)。当我们抽离出来这样三个元素后,现在塔防游戏就变成了这样的一种描述,即敌人按照地图中设计的路径进攻,玩家利用防守单位进行防守的一类策略游戏。经典的塔防游戏有哪些呢?比如我们最为熟悉的《植物大战僵尸》、《保卫萝卜》都是塔防类游戏的经典游戏。如果我们将塔防游戏中的防守单位的范围扩大到玩家,那么像《英雄联盟》这样的游戏同样是可以称之为塔防游戏的,因为敌我阵营的最终目的都是要摧毁敌方的防御塔,只是敌我双方都从炮台或者怪物变成了有血有肉的人物,加之角色扮演(RPG)和即时战略(RTS)等元素的混合渗透,使得这样的游戏从单纯的塔防游戏变成了一款可玩度极高的游戏(天啊,我居然在夸这个游戏.....)。好了,那么我们就来尝试着做出一个简单的塔防游戏吧,注意是简单的塔防游戏哦,既然塔防游戏的三个要素是地图、敌人和防守单位,那么我们就从这三个方面来着手设计这个游戏吧!在本篇文章中,我们将用到下面的知识:&Unity2D中的Sprite动画&Unity3D中的可视化辅助类Gizmos&塔防游戏中敌人按路径寻路的实现&Unity3D uGUI的初步探索&简单的AI算法&&&&& 一、地图篇&&&&地图是一个塔防游戏中玩家最为关注的地方,因为地图和敌人将直接影响到玩家的策略。如图是博主从《保卫萝卜》游戏中提取的一张游戏地图。在这张地图中我们可以清楚看到怪物进攻的路径,怪物将沿着地图中的路径向我方防守单位发起攻击。那么,在游戏中,我们该怎样确定怪物的攻击路径呢?首先我们可以对地图进行下分析,在地图中基本上基本上只有两种类型的区域,即可以放置防守单位的区域和不可放置防守单位的区域两种。由此我们可以设计出下面的结构:&using UnityE
using System.C
[SerializeField]
public class GridNode : MonoBehaviour
public enum NodeType
public NodeType GridNodeType=NodeType.CanP
可以看出,我们在GridNode类中定义了一个称为NodeType的枚举类型,这个枚举类型有两个值,CanPlace表示可以放置防守单位,CantPlace表示不可以放置防守单位。在GridNode类中只有一个NodeType类型的成员变量GridNodeType,该成员变量的默认值是CanPlace,即可以放置防守单位。那么,现在问题来了,我们找到了一种可以用来描述地图中不同区域的方法,可是这些区域在哪里呢?所以我们需要一种方法来生成这些区域。这里隆重向大家介绍Gizoms类,Gizmo是Unity中一个用于在场景视图可视化调试或辅助设置的工具类。简单的说,当我们需要在编辑器环境中实现某种可视化调试的时候,我们就可以使用Gizmo类。所以的Gizmo绘制都需要在OnDrawGizmos或OnDrawGizmosSelected函数里完成。从这两个函数的名称我们就可以看出它们的区别,OnDrawGizmos在每一帧都调用,所有在Gizmos里渲染的Gizmo都将被渲染,而OnDrawGizmosSelected仅在脚本附加的物体被选中时渲染。好了,在了解了Gizmos的基本概念和用法后,我们回到我们的游戏中。我们刚刚提到,我们需要一种方法来生成区域以便于我们可以使用GridNode类来描述每个区域的属性,那么具体怎么做呢?其实思路就是在地图上画出网格,这样网格便可以将整个地图分割成不同的区域,然后我们就可以使用GridNode来描述每个区域的属性啦。好了,下面我们来看具体的脚本:using UnityE
using System.C
public class GridMap : MonoBehaviour {
public static GridMap Instance=
public int MapSizeX;
public int MapSizeZ;
[HideInInspector]
public GameObject[] mN
[HideInInspector]
public GameObject[] mP
void Awake()
mNodes=GameObject.FindGameObjectsWithTag(&GridNode&);
mPaths=GameObject.FindGameObjectsWithTag(&PathNode&);
void DrawGrid()
Gizmos.color=Color.
for(int i=0;i&=MapSizeX;i++)
Gizmos.DrawLine(new Vector3(i,0,0),new Vector3(i,MapSizeZ,0));
for(int j=0;j&=MapSizeZ;j++)
Gizmos.DrawLine(new Vector3(0,j,0),new Vector3(MapSizeX,j,0));
void DrawColor()
if(mNodes==null)
foreach(GameObject go in mNodes)
Vector3 mPos=go.transform.
if(go.GetComponent&GridNode&()!=null){
if(go.GetComponent&GridNode&().GridNodeType==GridNode.NodeType.CanPlace){
Gizmos.color=Color.
}else if(go.GetComponent&GridNode&().GridNodeType==GridNode.NodeType.CantPlace){
Gizmos.color=Color.
Gizmos.DrawCube(mPos,new Vector3(1,1,1));
void DrawPath()
Gizmos.color=Color.
if(mPaths==null)
foreach(GameObject go in mPaths)
if(go.GetComponent&PathNode&()!=null){
PathNode node=go.GetComponent&PathNode&();
if(node.ThatNode!=null){
Gizmos.DrawLine(node.transform.position,node.ThatNode.transform.position);
void OnDrawGizmos()
DrawGrid();
DrawColor();
DrawPath();
}在这段脚本中,我们首先定义了两个int类型的变量MapSizeX,MapSizeZ,这两个变量分别用来表示需要绘制网格的大小。下面我们来重点关注OnDrawGizmos方法,在这个方法中我们定义了3个方法DrawGrid、DrawColor和DrawPath。其中DrawGrid方法负责绘制地图网格,DrawColor方法负责绘制地图区域、DrawPath方法负责绘制敌人寻路路径。我们首先来说DrawGrid,DrawGrid负责绘制地图网格,默认从原点开始绘制,要绘制网格只需要绘制交错的横线和竖线即可,这里我们使用的Gizmos类下的DrawLine方法我们首先在场景中创建一个MeshRoot的空物体,将GridMap脚本附加到该物体上,我们下面来看看绘制的效果:因为Gizmos为我们提供了可视化的调试功能,因此我们可以直接在编辑器窗口中看到实际的效果,这样我们就利用Unity绘制出了地图的网格。为了让地图的左下角和场景原点能够完全匹配,博主这里写了一个简单的工具类AutoPlace来实现地图的位置计算和调整:using UnityE
using System.C
public class AutoPlace : MonoBehaviour {
//精灵渲染器
private SpriteRenderer mR
//精灵宽度
private float mSpriteW
//精灵高度
private float mSpriteH
void Start ()
mRenderer=GetComponent&SpriteRenderer&();
//计算精灵的实际大小
mSpriteWidth=mRenderer.sprite.bounds.size.x * transform.localScale.x;
mSpriteHeight=mRenderer.sprite.bounds.size.y * transform.localScale.y;
//自动调整精灵的位置
transform.position=new Vector3(mSpriteWidth/2,mSpriteHeight/2,0);
&&&&& 好了,下面我们来继续讲解地图中区域的生成。什么是地图中的区域呢?在塔防游戏中玩家通常情况下都只能在可以放置防守单位的区域放置防守的单位,那么可以放置防守单位的这些地方就是我们接下来要来研究的区域。我们首先需要根据第一步绘制的网格,为每一个网格单元创建一个空物体NodeObject,并为该物体附加GridNode脚本,如果该物体所在的位置在地图上是可以放置防守单位,那么我们就将其GridNodeType设为CanPlace,否则就设为CantPlace。其实博主在这里是更喜欢用动态生成的方式来为每个网格单元添加区域属性的,不过这里我们为了将过程讲明白,索性就手动创建吧!哈哈,可是博主居然手动创建了96个空物体,想想都觉得醉了啊。好了,我们这里需要给每个NodeObject设置一个GridNode的Tag,这样我们可以在程序中通过Tag来获取所有的NodeObject。最后,我们将这些NodeObject全部放到MeshRoot这个节点下面,使其成为MeshRoot的子节点。下面呢,我们继续回到GridMap脚本中的DrawColor方法中,我们在脚本的Awake方法中首先获取所有的NodeObject,然后根据每一个NodeObject对象附加的GridNode脚本,来判断这个网格单元是可以放置防守单位还是不可以放置防守单位,如果可以放置防守单位就用绿色绘制一个Cube,如果不可以放置防守单位就用红色绘制一个Cube,这样我们编辑器中就可以根据颜色来区分不同的区域了。好了,我们下面来看看实际的效果:好了,现在大家可以很明确的看到整个地图中区域的分布,红色的部分为不可放置防守单位的区域,绿色的部分为可以放置防守单位区域。大家应该注意到红色的区域中有条白色的线,这条线呢其实就是敌人的寻路路径。那么好下面我们就来讲述敌人寻路路径的生成。相比网格和区域的生成,路径的生成要简单许多。因为路径只需要关注起点、终点和节点即可。具体怎么做呢,首先我们在场景中新建一个空物体命名为PathRoot,接下来我们在红色区域中分别为起点、终点和节点建立一个空物体,命名为PathNode,并设置其Tag为PathNode。&&&&&& 好了,接下来,我们再来一起看一个叫做PathNode的脚本,这个脚本的作用是描述各个路径节点的关系,类似于链表的结构:using UnityE
using System.C
public class PathNode : MonoBehaviour {
public PathNode ThisN
public PathNode ThatN
public void SetNode(PathNode _node)
if(ThatNode!=null){
ThatNode.ThisNode=
ThatNode=_
_node.ThisNode=
在这段脚本中,我们让ThisNode指向节点自身,ThatNode指向下一个节点,并提供了一个设置下一个节点的方法SetNode。现在,我们将这个脚本附加到各个PathNode上,通过编辑器可以快速地为每个节点指定ThisNode和ThatNode。那么,现在各个路径节点的关系我们已经很清楚了,接下来要做的是事情就是利用Gizmos将路径画出来,怎么画呢?从当前节点指向下一个节点就可以了。现在我们来看看DrawPath方法具体都做了什么:void DrawPath()
Gizmos.color=Color.
if(mPaths==null)
foreach(GameObject go in mPaths)
if(go.GetComponent&PathNode&()!=null){
PathNode node=go.GetComponent&PathNode&();
if(node.ThatNode!=null){
Gizmos.DrawLine(node.transform.position,node.ThatNode.transform.position);
Gizmos.DrawCube(node.transform.position,new Vector3(0.25F,0.25F,0.25F));
相信大家都明白了吧,我们首先根据Tag获取了全部的PathNode对象,然后根据PathNode脚本绘制了每个节点指向下一个节点的线段,同时为该节点绘制一个小Cube。好了,我们来看看最终的效果:&&&&&& 到现在为止,所有的关于地图的内容都讲解完了,我们来简单总结下,在这一部分,我们主要学习了可视化辅助类Gizmos在绘制网格、区域、路径等方面的应用,主要利用了DrawLine和DrawCube这两个方法。&&&&&&&好了,这个项目的内容比较多啦,因此博主决定将敌人篇、防守单位篇放在下一篇文章中来为大家讲解,因为在一篇文章中写完的话,不仅博主写起来会比较累,大家读起来会更累啊,所以今天的内容就是这样啦,希望大家喜欢啊!最后为大家送上今天的项目演示:每日箴言:痛苦也好,错误也罢,正是背负着这些,我们才能一步一步到达未知的前方,不是吗?喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei转载请注明出处,本文作者:秦元培, 本文出处:http://blog.csdn.net/qinyuanpei/article/details/
相关搜索:
相关阅读:
相关频道:
Android教程最近更新Unity 即 Unity3D ,这是一个游戏开发生态系统:强大的渲染引擎,完全集成一整套直观工具和快速工作流程,可以创建互动式3D和2D内容;简易的多平台发布。如果你是一名游戏玩家,那很有可能听过 Unity 这个名字,《神庙逃亡》、《死亡扳机》、《暗影之枪》等等游戏有一个共同点,它们都是使用 Unity 引擎技术制作。
Unity3D游戏
Temple Run
类型:益智休闲
语言:中文
DEAD TRIGGER
类型:射击游戏
语言:英文
Extreme Road Trip
类型:益智休闲
语言:中文,英文
Super Crossfire
类型:射击游戏
语言:中文
Running Fred
类型:益智休闲
语言:中文
类型:竞速游戏
语言:中文
类型:射击游戏
语言:中文
类型:益智休闲
语言:中文
Critter Escape
类型:益智休闲
语言:中文
类型:益智休闲
语言:中文
类型:冒险解谜
语言:中文
类型:动作游戏
语言:中文,英文
其他厂商专题}

我要回帖

更多关于 unity3d vr游戏开发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信