先安装好Unity环境,此步骤省略。目前我安装两个Unity编辑器,一个是最新版2023.1.x,一个是最新LTS版本的2022.3.x
同时,本地已有VS2022环境,VS2022需要勾选Unity的支持。如果你已经安装好Unity,有Unity Hub了,可以勾选Unity以后,把Unity Hub取消勾选。安装VS2022也省略。
一切环境准备就绪,Unity授权完毕(个人版本免费,学生党可以使用教育权限授权教育版,有钱的土豪可以自己选择其他版本。学习使用的话,个人版本够用了),就可以开始创建项目。右上角选择 新项目
选择3D项目,以及命名项目名称,例如翻滚的球球
电脑配置差的情况下,第一个项目这儿会有一个加载项目的过程,可能花一点点时间。包括下载初始的一些资源等等。
全部准备就绪完毕,就可以进入到初始化的场景页面了。初始页面如图所示。
Unity编辑器右上角可以修改布局,也可以自己拖动。右上角可以快速布局,例如Tall、双屏、四屏等等
或者自己可以对布局进行一系列设置以后,然后保存为自己的习惯性操作的布局模板。选择右上角-Save Layout,即可保存成你的自定义模板。后续你操作期间布局搞乱了,就可以一键还原你配置的布局模板了。
在布局栏可以看到自己配置的自定义布局模板
接下来看下项目目录结构。快速找到项目路径:Assets右键,文件资源管理器内打开,既可打开项目目录。并且可以看到,生成的项目自动就有一个sln文件,大家做.NET开发应该很熟悉,说明Unity可以直接用VS进行一些业务、逻辑的开发。
场景页面的项目下,还有一个packages目录,可以理解为各种资源、插件等的存放路径,类似.NET的VS项目的nuget包引用的一堆包之类的。
这些包默认是本地最初始的资源,如果需要第三方资源或者其他资源等,可以上左上角“资源商店”进行寻找或者购买你需要的资源.
默认是英文的,如果对英文感觉压力大的,可以选择中文。在“编辑”-“选项”里面进行配置。
找到语言选项,改为中文即可。如果没找到,说明你没安装语言包,自行安装一个语言包就行。
切换成中文以后,如图所示,很多英文就变成中文了。如果没生效,就重启Unity项目即可。默认情况下,建议使用英文,通用一点。有时候中文可能描述的和英文内容有一丢丢差异。
配置Unity后端代码的开发工具,【选项】-【外部工具】里面。可以自动识别你本地的C# 开发工具,例如VS2019、2022以及Rider都被识别出来了。我把他改为VS2022,2022才是目前最强IDE。
回到项目模块,Scenes里面存放的是场景,可以有多个场景。双击场景即可打开场景页面。
Hierachy是对应场景所有的物体都会显示在里面。例如初始默认有一个太阳光、一个摄像头。
这里面可以添加各种物体,例如Cube方块,场景里面就可以看到对应的方块了。场景里面通过鼠标右键可以旋转各种进行查看。这里面的物体,都是GameObject对象。
调整方块位置,以及光线,或者调整摄像机位置等,选中摄像机可以看到右下角的预览效果。
左上角Game可以看到游戏打开时候的页面效果,和预览是一样的。实际上就是摄像机是视野范围内看到的效果。
层级下面选中的物体,选中以后,可以看到Inspector属性页面(类似winform的控件属性)
场景的常用快捷操作:
选中物体,Ctrl+d可以快速复制。
鼠标右键按住,可以对场景进行旋转。
按住左键拖动,可以对场景进行拖动。
选中物体,按F可以快速聚焦。
按住Alt,可以通过鼠标左键对聚焦的物体进行旋转。
按住鼠标右键,然后通过 WASD可以进行四个方向移动。通过Q\E可以进行上升、下降。
场景右上角视野切换,Persp代表人眼视野。ISO代表平行视野。
场景内坐标系,默认是米为单位。
模型中心点,Pivot和Center
Pivot是当前选中模型自身自己的中心为坐标系
Center是以选中模型的整体,包括它的子模型的中心点为坐标系
全局坐标系和局部坐标系。
选中Global,代表全局,物体旋转啥的,都不会改变物体自身坐标系的方向,会和场景保持一致。例如红色的X轴,都是右边。
换成本地,可以看到场景的X轴方向和物体的X轴方向 不一样的。例如箭头指示两个不同方向,红色的X轴。当然,其他轴也是不一样的。
物体如果需要还原为最开始的默认位置和其他状态,可以通过点击 重置 选项来快速恢复
导入3D模型
可以从以下网站进行寻找可用的3D模型,有免费也有付费
https://free3d.com
例如我下载这个老破屋,个人可以免费使用,此处我下载它的fbx格式文件进行备用
解压以后,得到一个fbx文件
用鼠标直接拖到Unity编辑器内的资源文件夹下
选中以后,可以在属性栏里面查看到3D模型的预览效果
使用的时候,直接拉到上面就可以在场景里面看到模型了
接下来实战一下,开始真实的翻滚的球球的开发
创建一个新场景
创建一个地面 Plane
新建材质文件夹,然后新增一个材质
然后给材质默认颜色改个色儿
材质可以通过物体属性里面进行选择,里面内置很多已有的材质,以及刚刚我们自定义的一个材质
也可以对物体进行贴图,物体属性-Albedo里面进行打开贴图选项
创建一个球体,以及这个球的专属材质
物体属性有Renderer和Collider,前面是做渲染使用的渲染模型,后面是做碰撞检测的碰撞模型,两者是分开进行。
碰撞模型可以选择其他模型,例如更低性能损耗的。
选择物理模型
选择Sphere碰撞模型
球体外围就会有一层碰撞检测的简化模型
取消渲染模型,可以更清楚看见碰撞模型
为了能够控制球体运动,需要新增刚体组件RigidBody,增加这个组件以后,物体会受到重力、摩擦力等的影响
这里面可以设置物体的重力、摩擦力、是否启用重力等等选项。
创建一个C# 代码脚本文件
把代码脚本文件,直接拉给物体模型,就可以自动绑定,脚本代码自动也成了属性里面的一个组件
双击C# 脚本代码即可自动启动VS,VS版本啥的,前面文章内容有提到过在哪里配置,如果不知道可以回去看一下。
在Start里面写一个日志输出,例如Hello Unity
它会在程序启动的时候执行。
点击运行程序,可以看到左下角出现我们的日志输出。点击日志,可以打开日志面板。
点击对应日志,可以看到日志归属哪个类里面的哪一行
再测试下Update方法,输出当前时间,精确到千分位的毫秒
可以看到它一直在输出,这个输出代表的是每帧都会更新一次
所以根据前后时间,我们可以计算出帧率。咱们换算下帧率,然后继续输出到日志控制台
运行程序,输出日志,即可查看当前实时的FPS,看到当前FPS在130-150之间波动。这个数据和你自己电脑配置相关,电脑配置越高,FPS越高。
新增一个刚体变量,并在Update里面新增一个受力方向,例如右手边。
公共变量会在属性里面看到,直接把刚体组件拉进去赋值即可。
然后运行程序,可以看见小球落下以后,受到外力作用,往右手边滚动。
简化一下代码,新增获取前后左右方向的水平轴数据,该数据可以通过按WSAD或者上下左右按键获取。不过需要传入水平或者垂直两个字符串信息,这点需要吐槽下Unity,如果做成枚举多好。然后运行程序,就可以通过WSAD来控制小球四个方向移动了。
新增一个脚本给摄像头,用于控制摄像头跟随物体移动
新增一个GameObject对象,然后在摄像机模型属性下,把球体模型复制进去进行赋值
然后获取球体和摄像头本身的初始坐标位置,在Update里面实时更新摄像头位置
创建一个Prefabs文件夹,用于存放统一管理的模型,例如可能多次使用的同款模型。然后创建一个小球,拉到Prefabs文件夹内,弄扁以后丢场景内,就可以批量复制同款了。
然后创建一个基于该模型的脚本,例如就叫Score,然后复制给Score物体
新增旋转功能代码,让圆饼可以旋转.up是围绕Y轴旋转,Space.World代表按照全局,而不是自身进行旋转。
此时运行程序,应该可以看到圆饼在旋转了。继续对这组物体再新增Tag,Tag可以用来存储数据,例如此处用来存储圆饼类型,这样每次球体碰到该类型就触发得分。例如新增一个ScoreTag
在球体的脚本代码内,新增碰撞内置方法OnCollisionEnter,用来输出查看碰撞效果
然后运行程序,可以看到小球碰到物体以后输出了有关内容,并且圆饼的Tag也都一致。这样就可以用于直接判断是不是ScoreTag来进行是否得分了。
做个判断,每次碰到圆饼,就让圆饼销毁,达到被吃掉的效果
运行程序,实验下,可以看到碰到的地方被吃掉了
但是此时球体碰到其他物体会被减速,所以需要使用触发器来代替原生的触碰器。勾选启用触发器。
新增自带的OnTriggerEnter方法,操作方式和上面的触碰检测一致,只是参数不一样,但是参数内的元素是基本一样的。然后再启动游戏,就可以看见会被很顺滑地吃掉了。备注:【触发器里面,other.gameObject.tag和other.tag等效】
新增一个得分属性,用来存储玩家的得分。
例如每次吃到获得10分
运行程序,可以看到吃到以后,积分属性值跟着新增了
接下来需要把得分显示出来,新增一个文本UI控件
提示需要引入TMP,点击导入即可。
场景视图内,切换为2D,聚焦以后,修改对齐方式,例如居中上方对齐
然后运行,可以看到不管页面怎么切换和改变,UI文本都在居中上方不变
接下来,新建一个TextMeshProUGUI类型的属性,然后把刚才新增的Text UI拉进去赋值。
每次吃到进行UI文本的更新
启动程序,可以看到吃到以后,积分开始累积了。
一切写完以后,就可以进行发布游戏了。在文件里面,选择build settings,然后把需要发布的场景拖过去。
选择需要发布的平台,然后编译即可。
发布以后,就可以开始愉快地自己玩耍了
以上就是本文章全部内容,如果觉得有帮助,欢迎点赞、转发和在看。当然,要赞赏也行,写教程也有点累人。