
你好:
我从unity的角度来谈一下如何入门独立游戏开发。
自己周围有不少朋友自身都不是程序出身,但都想入门游戏开发。我有被询问过,自己也是自学过来的,所以谈一下自己的经验。
根据答主的情况美术出身,并不推荐学习ue4,相对unity会更加容易上手。
unity劝退很多人的理由如下:
1官方文档全英文,界面全英文。不得不说中国unity真的麻瓜,不是我说,别人日本unity刚成立一年,就弄了一份全日文的官方文档。看看中国unity成立多久了,都在做什么,我不想吐槽了…
相对unreal4就有官方中文文档,而且还有unity转unreal4的快速上手文档,还界面全中文…
2unity在国内的应用范围和普及程度比unreal4好太多。再加上unity在游戏行业的普及使用。所以有大量的培训机构想分一杯羹。培训机构你懂的,导致网上搜索unity得到的很多靠谱的学习信息被稀释了。
3unity网上第三方教学渠道质量层次不齐。例如游戏蛮牛,泰课,慕课等等。我这里罗列的还是国内相对名气大的,质量还算不错的学习平台。
层次不齐的原因有几点:
教学视频的讲师口齿不清晰,还带方言。
讲师自身逻辑混乱,一个很简单的东西听的人云里雾里的
讲师拖延时间,强行凑时间。导致听的人学习热情受到打击,讲了20分钟的东西。实际最多5分钟的干货。
中文教程缺乏系统性的靠谱的免费的学习教程。这个和大量培训机构的涌入有关。
说了unity这么多的不好,我来说为什么还是推荐unity的理由:
1unity在国内的普及程度很高,还是有很多优秀的学习资料的,不过相对零散,需要整理。我会在下文给出我自己认为不错的学习网站和学习资料和学习路线。
2不管是unity还是unreal只要涉及到逻辑都是要写代码的。两者没有区别!!!
unity用的是c#语言,而unreal用的是c++语言。
c#比c++好学!!!
c#比c++好学!!!
c#比c++好学!!!
重要的事情说三遍!!!!!!!!
3如果你用unity遇到问题,在网上不管是在中文环境下还是英文环境下寻求帮助会比unreal快一些。因为学unity的人多!!!
4unity比unreal好学!!!!
正题开始!!!下面开始从unity的角度如何入门独立游戏开发:分别从代码,游戏引擎,美术,游戏设计角度来探讨。
会从入门的角度来逐一分析。下面排版可能会比较乱,我最后会集中整理网址的。想看网址的可以直接跳最后。
代码学习:
1.c#语言
因为是入门,所以只需要学会用c#来写简单的业务逻辑就可以了。不需要去学习什么高大上的框架,热更新方案和语言特性。
代码的掌握是学习和实践反复交互的过程!!!不是我现在抱着一本书啃就完事了。也不是我把一个游戏做出来我就掌握了XX语言.
c#基本语法学习途径:
C# 教程 | 菜鸟教程>
菜鸟教程里的信息及其适合新手学习编程语言。即使编程一点不会也可以上手轻松学习。
这是我建议第一步需要看的信息。掌握基本的逻辑编写能力就够了。后面可以反复回来看使用 Microsoft Developer Network 学习开发msdnmicrosoftcomC# 指南docsmicrosoftcom
微软官方文档,c#是微软搞的语言,微软有官方c#代码学习和接口使用说明!!!
中文!!!!!中文!!!!!中文!!!!!
这可是不知道多少人的心血!!!强烈安利
2Unity中运用c#编写脚本
B站UP主风农spacebilibilicom
这个UP主上传了很多unity官方视频的中文字幕翻译版
壮哉我大B站!B站可不只是用来追番和看**姐的,还能学习。我推荐其中几个教学视频来入门编程。可以结合上述菜鸟教程的一起看。
菜鸟教程讲的是语言本身使用,但是这里推荐的视频是直接将C#代码在unity里使用的案例。知其所以然,然后运用。
风农:Unity 脚本开发spacebilibilicom初级阶段看完我觉得已经能写一些简单的脚本了Unity圣典>
这个是unity里官方代码接口文档的民间中文翻译
这个网址有多爽,我下面截图给你看一下
unity圣典unity官方文档
虽然unity圣典已经很久没更新了。很多接口都是旧版本的说明。但是丝毫不影响入门。
unity官网unitycomunity官方教程unity3dcomUnity User Manual (20183)docsunity3dcom
当然最好的那一定就是Unity官网给的教程和接口文档说明。很多unity圣典里的老接口在新版本里不通用,或者风农视频里的代码在新版本的Unity里发现报错,可以百度或者谷歌大法。
游戏引擎unity学习:
如果说代码是劝退了很多非计算机相关专业的人的话,对于英语不好的朋友学习unity游戏引擎也是劝退的一大难关。
其实目前已经有不少我觉得不错的中文的入门学习视频和网站,但是如果想进一步学习,成为一名真正的开发者,则必须要克服语言这一难关。
因为游戏引擎本身就是很多模块的集合体。对于入门独立游戏开发我分别来讲一下
引擎本身的基本使用
目前流行的UI控件的使用
其实这些或多或少都和代码脱离不了关系,建议是结合和代码一起来学习。
掌握这两个就能应对比较常见的界面问题和unity的简单的基本使用了。其实我还想讲一下动画机的学习,物体的材质等等。但是我觉得这些不算入门独立游戏开发需要学习的东西,而是称为独立游戏开发菜鸟(雾)需要了解的知识
1引擎本身的基本使用
在代码界有一个笑话:我精通各种语言来写 Hello World!
写一个Hello World可以理解为学习一个语言的起点。对于学习游戏引擎也是一样的,我觉得对于unity可能就是意味着创建一个新工程然后点击运行,那么我们的游戏(雾)就跑起来了!下面开始正题
Unity官方实例教程 Space Shooter(一)
Unity官方实例教程 Space Shooter(一)>
我这里觉得用实际的项目来学习unity的使用是一个比较高效的方法。这个是unity官方教学视频的中文民间翻译文档。我以前跟着做过一遍,我觉得能从各个角度来帮助毫无基础的新人来学习如何使用Unity来进行游戏开发。在这个教程的学习过程中你不需要过多纠结特效,材质等等,我们需要关心的是
如何新建一个工程
摄像机简单的使用
scene和game的tab分别表示了什么
三维坐标的学习和使用
代码的书写所呈现的结果是什么
控件的添加和减少的表现是什么
如何选择打包配置
等等
这些知识很基础,但在游戏开发中会无时无刻都会要你去使用和修改。
如果还觉得不过瘾,可以看下面这个同样是unity官方教学视频的中文民间翻译文档
unity Tanks视频教程>
siki官网
顺便安利一下这个讲师siki,siki是我目前听了诸多网上教学视频,论质量和口齿清晰程度都是极好的那一类。我只安利免费视频,课程购买仁者见仁智者见智
入门而言这2个视频跟着学就够了。
请一个一个代码敲过去,而不是看!
请一个一个代码敲过去,而不是看!
请一个一个代码敲过去,而不是看!
2目前流行的UI控件的使用
目前主流UI控件为UGUI和NGUI。还有像FariyGUI之类。
学习优先级:UGUI>NGUI>FairyGUI等其他UI控件
理由如下:
Unity最初是有自己的控件GUI的,但是及其难用,然后民间团队自己根据GUI拓展和封装出了NGUI,将NGUI发布在Asset store(Unity官方资源和插件商店,后面会讲到)。后来Unity将NGUI团队直接收编,搞了一个自己官方的GUI控件:UGUI。
本质上UGUI和NGUI是爸爸和儿子的关系。现在NGUI已经不维护了,并且UGUI也是在吸取NGUI教训的基础上做了改进,强烈安利UGUI。
在unity2017版本,及其到现在的unity2019,NGUI控件的使用会和其他控件发生不兼容和冲突。因为其毕竟已经不维护而且老旧了。虽然功能依旧强大。UGUI就做到了完美兼容。
NGUI是亲爸爸,那么UGUI就是亲儿子。FairyGUI之类可以理解为私生子,很多还不知道有没有后妈带(即有没有后期更新和维护)。当然不是说FairyGUI之类的就不优秀了。但是如果是自己学习和开发的话,建议还是走正统的路子,即UGUI。
UI控件使用范围而言UGUI>NGUI>其他第三方UI插件。很多老项目团队目前还是在使用NGUI,毕竟项目已经上线,不可能有闲时间再换一套UI控件。新项目或者相对新的项目都已经启用UGUI了。而且即使学了UGUI或者NGUI,两者之间很多代码都是一样的。毕竟同一个团队研究出来的东西。
下面是入门学习教程
UGUI
UGUI教程>
NGUI
NGUI这里我推荐在导入其插件包后根据其教程自带的UI场景来学习使用。可能比视频学习和文档学习来的高效。如果突击哪个控件看不懂怎么用可以百度
例如百度:NGUI Button控件
NGUI控件有能力的就在官方的Asset store购买。没有能力只能百度各显神通了
unity3d之UI界面学习NGUI插件的导入步骤blogcsdnnetNGUI官方文档>
Fairy GUI
FairyGUI>
这个UI控件我没有用过,但是其名气还是可以的,而且有一定的市场,有团队在维护和更新。具体怎么使用官方有教程
3美术
今天刚看到一个老哥的回答,觉得讲的挺有道理的,我下面贴一下
如何入门独立游戏开发? - 知乎>
大致的意思就是别单打独斗,我看了很多人的回复也有这个观点,同时自己也是这个观点。即使你说你是美术,我可以自己解决美术问题,但是老哥,你是不是时间太够用了?看看隔壁的光明记忆说这游戏基本都是我一个人做的,做了多少多少年,结果曝出来模型抄袭。。。。
分享一下@A大 AliveGameStudio的个人制作的独立游戏总结视频,他在这个视频里提到了好多次,如果给我再来一次的机会,我绝对不会单打独斗制作这个游戏。
我做一个独立游戏4年,赚了多少钱?-《丽莎的记忆》开发日记34>
所以我这里也不会,我也不懂,分享如何教人制作美术资源的流程。虽然这也是我的一个接下来需要补的知识点,更多是了解吧。
回归正题,独立游戏开发入门而言,美术完全可以从网上随便扣,随便扒,前提是你不把你用了这些资源的游戏上架。咱们只是入门,需要的是学习和观察别人的美术资源的设置和效果。
下面安利一些获取在入门独立游戏开发中可能会用到美术资源网站
Unity官方资源商店assetstoreunitycom
里面有很多免费和收费的优秀资源。从模型,材质,插件,特效,UI资源等等。记得注意支持版本,一些优秀的资源如果你购买了,作者还会维护和升级,记得升级就好。
CGtop拓扑网_CG模型网_游戏资源_游戏素材_游戏模型_游戏贴图_手游素材_游戏美术_游戏界面_CG资源网 - CG拓扑网_CGtopcom>
我觉得如果是美术的话资源获取的途径应该有很多吧。。。我这里只是简单列一些。
4游戏设计
推荐一个思维导图工具Xmind,可以让你更好得整理自己的思路。
XMind思维导图 | XMind中文官方网站>
对自己有要求的话:对于如何使用WORD写文档和如何使用excel填表格会很有利于以后的开发
既然是独立游戏,那么和商业游戏最大的区别应当是更多注重游戏的玩法而不是营利性。
下面安利几本不错的游戏设计方面的书
《通关 游戏设计之道(第2版)》([美]Scott Rogers)摘要 书评 试读- 京东图书itemjdcom《游戏设计梦工厂》([美]Tracy Fullerton(特雷西·富勒顿))摘要 书评 试读- 京东图书itemjdcom《有生之年非玩不可的1001款游戏(第2版)(精)》陈功尹航摘要 书评 试读- 京东图书itemjdcom《平衡掌控者――游戏数值战斗设计》(似水无痕)摘要 书评 试读- 京东图书itemjdcom
链接我JD随便找的
个人推荐学习路线:
1C# 教程 | 菜鸟教程完成基础概念学习,上面已经提到,不赘述。
2风农:Unity 脚本开发:初级篇看完
3Unity官方实例教程 Space Shooter(一):跟着打代码,思考代码为什么这么写。
上述3步不用严格从1到2到3。直接可以相互衔接和根据个人能力相互切换。不死板,根据个人学习情况自由转换。
4C# 教程 | 菜鸟教程看完,或者有时间的推荐看下面这本,也是我的c#入门书。
《图灵程序设计丛书:C#图解教程(第4版)》([美]Daniel MSolis)摘要 书评 试读- 京东图书itemjdcom
5结合4把做游戏的时候用到的API巩固和深度思考一下,可以结合学习网站和官网来思考。网站下面会列出来。
6自己做一个用unity做一个简单游戏:贪吃蛇,俄罗斯方块,五子棋都可以
不可以百度XX游戏怎么做,自己尽自己所能去写,代码和方法再怎么丑,怎么蠢也也没关系。
当然语法不会是可以查的,Unity控件不会用也是可以查的。反对的是查找贪吃蛇游戏设计思路和相关代码。这样无法提高。
等写出来游戏后再去百度查别人正确的设计思路,然后再反思自己的。
然后4-5-6反复,不过4和5可能就不是我上述的内容了,反复迭代。
其实就是学习和实践的反复循环
最后整合我认为不错的教学网站、资源网站和个人博客。会包含上面提到的所有网站。不可能列的很全,只能说相对。分别从查阅资料网站、游戏引擎学习、代码学习几块来说
课程购买仁者见仁智者见智!!!!!!
课程购买仁者见仁智者见智!!!!!!
课程购买仁者见仁智者见智!!!!!!
粗体字网址表示需要**
1、查阅资料网站
百度
知乎
CSDN(国内专IT技术社区)
**:
unity官方论坛
stackoverflow(国外的优秀的代码答疑网站)
维基百科:
谷歌:
unity官网:
coursera:评论区的老哥
@李狗蛋同学
推荐的,搜了一下unity相关还是不错的,推荐有英语基础的人在上面学习。原评论:占楼推荐一波我最爱的Coursera,上面也有很多c#和unity的课程,基本上申请financial aid就可以免费观看还能拿证书[爱]
2、游戏引擎学习
不错的博主
雨松(强烈安利!!!!非常适合初期学习时候去借鉴文章和查阅问题)
浅墨_毛星云:究极大佬!!!!
七喜先生の猫
DSQiu
Candycat(《Unity Shader入门精要》作者,上交程序媛)
云风的 BLOG
YzlCoder
Spring5211
fangsunjian
风农(B站搬运工、优秀的官方视频翻译)
Shallot夏洛特
A大 ALIVEGAMESTUDIO
知乎的我就不列了
学习网站:
Unity官方实例教程 Space Shooter(一)
Unity官方实例教程tanks By Siki
腾讯游戏学院:
UWA:专注于游戏优化的团队,有不少优化方向的干货,最新还新加了UWA开源库。每年一度的UWA大会超级赞,在上海,有机会参加的话可以报名一下。
**:
Unity圣典(Unity官方文档民间中译)(已挂)
unity官网
Unity Learn Tutorials
Unity User Manual (20183):Unity官方接口和引擎使用文档
UI方面:
NGUI官方文档
FairyGUI:
**:
UGUI官方中文教程
Unity User Manual (20183):Unity官方接口和引擎使用文档
3代码学习
代码语法学习:
菜鸟教程
使用 Microsoft Developer Network 学习开发:
C# 指南
Unity 脚本开发
代码练习和学习网站:
国内有哪些好的刷题网站 - 九章算法的回答 - 知乎>
4图形学知识
这个已经不算是入门所需要学习的知识了,这里一并附带说一下。
直接贴上Milo Yip的回复。
系统的学习计算机图形学,有哪些不同阶段的书籍的推荐? - Milo Yip的回答 - 知乎>
另外安利一本3D图形学入门书籍
《3D数学基础:图形和游戏开发/游戏软件开发专家系列》([美]Fletcher,Dunn,[美]Ian,Parberry)摘要 书评 试读- 京东图书itemjdcom
这本书更多会设计到线性代数和简单的几何学相关的知识,这本书能够很好得让我们了解图形学中得数学。网上有电子版可以直接搞到手,课后习题推荐做,不过有些题答案比较难找。
这本书我翻来覆去看了好几遍了,强烈安利入门用。
文章内容:
一、认识DoTween插件
二、通过UGUI制作血条的三种方法
认识DoTween:
Using DGTweening;//引用DoTween插件的命名空间
脚本:
1DoTween Animation
2DoTween Path
类:
1DOTweenAnimation(补间动画)
属性:设置是否自动销毁:补间动画对象autoKill
更改动画持续时间:补间动画对象duration
更改动画的延时播放时间:补间动画对象delay
更改动画的循环次数:补间动画对象loops
更改动画的循环类型:补间动画对象loopType
方法:向前播放动画:补间动画对象DOPlayForward();
向后播放动画:补间动画对象DOPlayBackwards();
通过ID名称播放动画:补间动画对象DOPlayById(ID名称);
2Tweener
DoTween创建的动画,默认都是Play状态,而且播放完毕之后会自动销毁,
但是有很多动画需要不断的循环次数,
所以说按默认的话,就需要不断的创建和销毁动画,
这样就造成了内存的消耗和资源的浪费,我们要避免这种情况。
DoTween为我们提供了一个类,方便我们对动画的状态和属性进行修改,这个类就是Tweener
方法:
移动:Tweener对象=Transform对象DOMoveX(X方向移动的距离,持续播放的时间);
延迟:Tweener对象SetDelay(延迟播放的时间);
设置播放(运动)方式:Tweener对象SetEase(Ease枚举成员名);
暂停:Tweener对象Pause();
//可以分开写,也可以一次写完
Tweener对象=Transform对象DOMoveX(距离,持续时间)SetAutoKill(true或false)SetEase(Ease枚举成员名)SetLoops(循环次数,循环类型枚举成员名);
实例:通过点击打开按钮、关闭按钮播放动画(OnEnable方法、OnDisable方法、Tweener类、Button类,使用标志位)
3Sequence(队列)
实例化一个Sequence:Sequence 对象名= DOTweenSequence();
方法:
往队列中添加动画:队列对象Append(添加的动画);
队列延时播放动画:队列对象PrependInterval(延迟时间);
往队列中插入动画:队列对象Insert(插入的位置,插入的动画);
实例:制作血条(通过克隆、动态加载、父子物体、坐标转换、显示隐藏)
方法一:通过静态加载:拖游戏对象给脚本进行实例化;
方法二:通过动态加载:使用ResourcesLoad<后面的预设体类型对应>("预设体的路径") //此方法默认状态下是在Resources目录下查找预设体!!!!
预设体必须在Resources的目录下才能被找到,否则会报错!!!
以上两种方法,克隆的血条需要单独放在另一个画布(Canvas)中存放;
在调整血条大小的时候,不要直接调整血条的宽高,很容易出错,最好是调整它的缩放;
画布的渲染模式选择摄像机渲染屏幕空间,方便观察,可以显示血条(2D),也可以显示方块(3D物体)
方法三:画布的渲染模式选择世界空间渲染模式,把画布也当作一个游戏对象,分别把每个画布作为每个方块的子物体,并把每个方块的血条当作每个画布的子物体,通过画布显示每个方块的血条信息,使用LookAt方法写一个让带有血条的父的物体画布朝向摄像机的位置
自学备用,如有问题欢迎及时指正,我会尽快改正。
(版本unity 201829f1)
本篇记录 Unity UGUI canvas 中的各项参数设置和效果,还是那句话自学备用,如有问题欢迎指正,我会尽快改正。
新建的Canvas拥有Rect Transform,Canvas,Canvas Scaler 以及 Graphic Raycaster 这几个组件。Rect Transform此时为灰色,在Scene视图中不能对Canvas进行 *** 作。Rect Transform 下一行英文“Some values driven by Canvas” ——Canvas驱动一些值。
此设置时,Canvas会填满整个屏幕,并将Canvas下面所有的UI元素置于屏幕的最上层,Canvas将一直覆盖场景中普通的3D GameObject。
启用pixelPerfect可以使元素看起来更清晰并防止模糊。勾选不启用抗锯齿(还在实验中,暂无截图)。
Canvas深度,数值越大,显示的优先级就越高,也就是数值大的Canvas会遮挡住数值小的Canvas。
此设置使Canvas渲染到指定的显示中。支持的辅助显示器(例如监视器)的最大数量为8。
最新几个版本中拥有的特性,提供给Shader使用的参数。此处不太了解。
启用pixelPerfect可以使元素看起来更清晰并防止模糊。勾选不启用抗锯齿(还在实验中,暂无截图)。
指定Canvas渲染在哪一个摄像机上
当Camera的Projection为Orthograhic时,此值得改变仅仅会改变Canvas的Pos Z;
当Camera的Projection为Perspective时,此值得不仅会改变Canvas的Pos Z,还会影响Scale。
当Plane Distance等于Camera的Clipping Planes的Near时 ,相当于Render Mode 是 Screen Space-Overlay 的效果,当Plane Distance等于Camera的Clipping Planes的Far时,Canvas在所有物体的后面。
Sorting Layer,可为UGUI设置画布深度,在下拉菜单中点击“Add Sorting Layer”按钮进入标签和层的设置界面,或者点击导航菜单->edit->Project Settings->Tags and Layers进入该页面。可以点击“+”添加Layer,或者点击“-”删除Layer。画布所使用的Sorting Layer越排在下面,显示的优先级也就越高。
在相同的Layer中区别显示层级关系的设定,相同的Layer中Order in Layer 越高,显示的优先级也就越高。
World Space即世界控件模式。在此模式下,Canvas被视为与场景中其他普通游戏对象性质相同的类似于一张面片(Plane)的游戏物体。在此模式下我们可以手动设置RectTransform数值,来改变Canvas在世界中的位置选择大小等。当所用UI为场景中的一部分时,我们可以使用这种模式。
此处在我使用时World Space模式下,Event Camera为空也可以执行按钮点击事件,摸索中~~~~~
不断学习中。整理出来忘记时看看,有错误的地方感谢指出。
使用快捷键以及鼠标点击都可
最简单的先创建一个Image
在Hierarchy窗口里的空白处右键点击>>UI>>Image (如图)
Unity3D里几乎所有的东西都是在此可以创建的
至此 创建完毕
这个选项按照官方文档的意思是让UI渲染的更加清晰质量更加高,但是会降低流畅度,不是太清楚,按照默认关闭就行了
就是选择渲染摄像机,可以选择一个自定义的相机也可以选择自动创建的摄像机,只要UI在摄像机范围内就行了。
如图:
这两个是关于渲染层级关系的
当把画布设置为worldspace后,画布及画布上的UI对象在世界空间默认也是靠Z值来决定渲染顺序的,离相机远的先渲染。当设置了sorting layer后,渲染的次序就由sorting layer来确定了。sorting layer是自定义的标识符,哪个sortinglayer在前(在layer & tags中设置的先后顺序)哪个先渲染。
order in layer是个数值,是在同一个sorting layer内的细分,sorting layer相同时order in layer的数值越小越先渲染。
材质通道这个保持默认就行了
这里在Screen Space-Camera下的话有以下选项:
像素是由很多个小方格组成,每一个小方格上都存储了位置信息和色彩信息。像素是图像的最小单位
——图像分辨率:每英寸内有多少个像素点,单位为PPI(Pixels Per Inch),像素每英寸。例如72ppi代表每英寸包含72个像素点
——屏幕分辨率:屏幕每行的像素点数 屏幕每列的像素点数。例如1280 720代表横向1280像素纵向720像素,其总数为1280720=921600个像素
——为什么图像(位图)放大后会变得模糊?
例如这是一张135145的图,左边为正常情况下的全图,右边为放大之后的局部图。明显的看出放大之后图像失真了变得模糊了。那为什么图像会变得模糊呢?
这是因为图像放大后图像分辨率变小了,也就是每英寸显示的像素点数变少,所以变得模糊了。正常情况下单位面积内可以显示所有的像素点数比如10000个,而放大后单位面积内只能显示1000个像素点数。
所以不难理解单位面积内的像素点越多,图像就会越清晰越逼真。
在Inspector面板的图像设置中有一个Pixels Per Unit参数。它代表Unity的一个单位长度包含本多少个像素
在Unity中创建的Cube等基本图形默认就是一个Unity单位长度,一个单位长度在unity世界坐标中代表1米
例如默认值为100,则代表一个Unity单位包含本中100个像素
现在已经明白了Unity中单位与像素之间的关系,其实它与相机的视口也存在一定的关系。
结论是这样的:相机高度占的单位长度=相机的size 2
既然屏幕宽度占的单位长度与相机size大小没有关系,那么屏幕宽度与什么有关系呢?
新建一个cube,因为cube的长和宽都是1个单位长度。
调整Camera的size为05,则在屏幕高度上应该是052=1个单位长度,也就是正好可以放下1个cube。
例如屏幕的分辨率为5:4,如左图所示。
例如屏幕的分辨率为16:9,如右图所示。
不难发现,无论怎样调整分辨率,相机显示的单位高度都不会改变,但是仔细观察两种不同分辨率下的Game窗口,天空盒占的范围不一样。
所以得出结论:相机高度占的单位长度只由Camera的size决定,而相机宽度占的单位长度是由于分辨率不同再通过一个比例计算出来的。
是这样计算的
又因为相机高度占的单位长度=相机的size2,所以总结出来一个公式:
改变不同的分辨率后测试后发现不同分辨率的Game视图不但Scale不为1而且还是不同的。
继续测试,当分辨率为2304 1440时(我的屏幕最大分辨率为这个),当Game窗口小时,Scale为0256,当Game窗口大时,Scale为0586。
比如一张的分辨率为1024 219,然后游戏视图分辨率为1280 720。设置Pixels Per Unit为219,相机size为05,应该是正好为屏幕的高度。可是的宽度分辨率明明是219像素,为什么却在游戏视图中变成了720像素了呢。
因为相机的高度为1个单位长度,而也是一个单位长度,所以会输出整个画面的高度,所以才会显示720像素的高度。
对于背景,按钮等都会用UGUI绘制,UGUI有可视化的自适应设置功能,但对于2D游戏中的精灵呢。
现在需要一张地面的始终与屏幕宽度一致,屏幕的分辨率为9:16,的分辨率为1024 219。放到场景中发现它并不能满足我们的要求。
但是对于实际的项目来说需要做到动态自适应,而不是我们计算出来手动去修改数值。
1首先可以改变的Pixels Per Unit,但是发现它是只读的属性。
2根据不同分辨率改变相机的size的话场景中的其他元素都会受到影响。
由于以上两种方法都无法适用,所以对于2D精灵的自适应应该去改变的自身scale(这种方法会让拉伸变形,我还没有找到更好的解决办法)。
\\
using UnityEngine;
public class Adjust : MonoBehaviour
{
}
\\
以上就是关于如何入门独立游戏开发全部的内容,包括:如何入门独立游戏开发、认识DoTween插件以及通过UGUI制作血条、Unity UGUI Canvas简谈等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)