找回密码
 立即注册
查看: 1257|回复: 20

[简易教程] Unity学了很久做不出游戏怎么办?

[复制链接]
发表于 2021-1-1 10:47 | 显示全部楼层 |阅读模式
Unity学了很久做不出游戏怎么办?
发表于 2021-1-1 10:56 | 显示全部楼层
被 @任泉 艾特了,这里就顺便展开说说。
题主这种情况很正常,有不少人遇到过类似的问题。
一方面看,自己想要的东西不知道如何实现,这是必经的一个过程;但是另一方面,也说明可能是不小心走入了误区。
第一,要知道:视频教程,学得快,学得浅。
视频教程本身很厉害,现在有越来越多的人通过看视频学到了游戏开发的技能。但是视频教程一般是追求新奇、有趣、成就感强,做视频的首要目的是吸引起同学的兴趣。如果不能吸引兴趣,那无论内容多好,都是白做。(真正能从头到尾看完的人太少了,我们游戏视频的后台数据也证明了这一点 ;)  )
对视频的录制者来说,要精心挑选题材、预习过整个流程,才能顺畅的进行录制,不出现返工、卡壳的情况。用到的方法也尽可能优化和简化,直接拿出最好的方案,省略一部分思考过程。毕竟视频想要清晰流畅、简明易懂并不是容易的事,而思考过程是很难给观众直接展现的。
比如这个比较受欢迎的视频,不长:https://www.bilibili.com/video/av12497611?from=search&seid=7766548932821352654
第二,要认识到:真正的实力,只能在磨练中积累
记得上数学课的时候,遇到一些做不出的难题,老师总能提纲挈领,推导几下我就能猜出大概了。但是下次再做的时候,又会陷入苦思,关键的步骤就是想不出来。
总体来说游戏开发比数学简单的多得多,但是也并不是简单到照猫画虎就能搞定,同样需要思考和尝试。看视频时只花费了5秒钟就搞懂的步骤,其实自己做的时候半小时也未必做的好。
特别是遇到bug的时候,就更考验人了。产生bug的原因可能存在于每一个环节,如何缩小范围、定位它就是一门基本功了,而基本功可不是练习一两次就能彻底掌握的。
所以不管你看过多厉害的视频,真自己动手的时候,也仍然要循序渐进。从不值一提的“像素鸟”做起,可能也会发现问题;看似简单的飞机大战、跑酷,自己做的时候也会发现意料之外的问题。
第三,学习更多“范式”不见得有多大帮助,独立思考特别重要
当解决问题遇到困难的时候,很多人会自然而然的想:是不是我掌握的知识还不够多?于是去看更多技术方面的书。
其实遇到这种问题,主要矛盾还是在于思考和实践不够,没有形成解决问题的核心能力。想要提高实现功能的能力、提升解决问题的能力,直接竭尽全力做出来真是最好的方法,而不是学更多不相干的知识。
事实上,只要学会了if、while等基本语法,就足够解决某些高深的算法问题;掌握了输入、移动、碰撞检测,就能做出很有趣的小游戏。问题在于,实现这些东西需要开动脑筋,将基本功能巧妙组合起来。


最后回到实际的问题上来,其实动作游戏的角色控制器是非常难写好的,做起来比看起来难的多。比如我们的专栏里很受欢迎的重制茶杯头、重制空洞骑士,控制部分写起来不简单,难度较高仅供题主参考:
Yukine:Unity程序猿勇闯茶杯之魂(一)繁华如梦:用Unity重现《空洞骑士》的苦痛之路(2)——人物控制篇

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-1-1 11:06 | 显示全部楼层
你这相当于完全没基础,不仅程序没基础,而且美术也没基础。
而且我估计你英文也不大好,否则照着Unity官方教程的那些基础篇走一遍的话(前提是听懂,而不是光照着做出来而已)都不至于是现在这个样子。
看网课学习如果0基础的话其实效率是很低的,因为你都不知道先看哪些后看哪些,先学什么后学什么,哪些讲错了哪些过时了。不理解代码的时候照着打字可能越打越糊涂。
所以你需要找一个靠谱点的系统点的网课或者网校来上一下,或者至少找个人来带你一下。否则你一无基础二无环境,想入门挺难的。入门之后反而就可以更偏向于自学了。
知乎上面比较活跃的培训里面我个人感觉 @皮皮关 还可以,比较偏程序向,新手向,你可以先看看他的一些文章和B站教学(他发挺多免费B站教学的,比某些只在B站发广告的培训机构良心),然后再决定报不报吧。
第一款小游戏还是尽量做2D platformer(平台跳跃)类的吧,教程多框架多,先不要总想着自己去造轮子(比如你说的去做角色控制器),有现成的轮子就先用着(比如自带的Character Controller),用熟了再去试着自己造。
照着教程实现了案例之后可以试着改造,先从换皮开始,再慢慢尝试加/减功能。
另外,如果不能保证学习的连续性和时长(至少得保证每天3小时左右的专注学习时间且吧),建议先放弃代码侧的学习,先从美术侧入手,学会找素材用素材(Assets);然后学下PlayMaker这种可视化的东东来上手交互,慢慢学着从读懂交互逻辑到读懂程序脚本(能将简单程序案例拿PlayMaker重新实现);最后再去尝试自己写代码。
最后,加油!不要因为感觉没效果而放弃学习,因为有时候学习效果并不是能够立即显现的,而是逐渐累积到某一个时刻突然开窍的。
发表于 2021-1-1 11:15 | 显示全部楼层
不知道你看得框架、设计模式之类的书或者教程是什么书 和什么教程。
反正你遇到这个问题,说明是没看过我的框架搭建的教程。
直接贴上连接吧:
框架搭建 2019 视频版本:http://www.sikiedu.com/course/319
框架搭建 2019 专栏版本:https://liangxiegame.com/zhuanlan/list/24806548-c7f3-490d-88ef-e98d0aeb33e4
框架搭建 2020 版本,目前没有开放出来,只能通过报名我的 Unity 进阶班级才能看到,我的进阶班级主要就教三个东西,框架搭建(模块设计、系统设计)、Shader(跟着案例从简到难一个个学习)、副业孵化。
发表于 2021-1-1 11:18 | 显示全部楼层
会用引擎和会做游戏是两个不同的技能。 引擎很容易学, 所以你可以不用担心。


游戏的话可以关注下知乎的一些游戏设计和评论方面的答主, 比如 Necromanov 或者搜 旗舰评论。
然后游戏的常见分类和相关系统 你可以查 维基百科, 找到你想要的类型都有哪些必要功能和系统。都有相关描述。
游戏开发需要 翻墙 油管看GDC Talking, 有各种技术实现分享。
具体实现可以Google 学术上找相关论文。
实现参考可以在 unity 的asset store 上和 github上找。 shader相关去 shadertoy
或者你直接用也不是不行。


通常矩阵什么的东西你没必要了解, 引擎都帮你处理好了。你只要知道会调用哪些API 就可以。
书的话游戏设计不少, 实现就比较少了。 除了游戏AI 实现方面有几本,其他没有推荐的。 基础原理有 《游戏的数学》 和 《游戏相关计算机图形学》 等。其实大概看看就可以了。 不看也不是很有所谓。
动作类游戏要了解日式格斗和动作游戏的功能和系统。 去相关论坛贴吧翻精华贴有各种分析基础概念科普什么的, 你可以从这里开始了解。
发表于 2021-1-1 11:23 | 显示全部楼层
还是提一个实际一点的建议吧.
从你的实际需求出发,比如要做一个动作游戏.

要不要像其他游戏一样来个先logo,然后选择模式,或者设置东西什么的.
如果要,那你想想如果要实现这些东西应该需要什么.显示logo,首先你得能知道怎么显示,创建个GameObject,添加一个RawImage,RawImage的texture,设置为你要显示的图片.
那这里就会有几个问题.GameObject是代码动态创建,还是做个预设?使用RawImage还是Image?怎么样加载logo图片然后赋值给texture?如果要做淡入淡出该怎么做?更好一点的效果,希望淡入和淡出的速度不是恒定的而都是越来越快的.
做个预设,使用RawImage.因为logo图片一般比较大,使用Resources.Load.AssetBundle.LoadAsset或者在面板上静态赋值.使用别人常用的DOTween或者自己实现去操作RawImage.material.color.a,毕竟比较简单.变化速度越来越快,可以给DOTween加个曲线,或者自己调用内置的AnimationCurve,根据时间取对应的值.也或者自己写一个合适的公式.计算实时的透明度,比如alpha = time * time * speed.
下一步,关闭logo,显示选择模式的界面.
做个选择模式界面的预设.然后是点击响应.获取到点击某个GameObject的操作后,执行相应的逻辑,设置当前游戏模式,保存到某个生命周期长的类,一般都是全局的一个类,然后跳转到下一个流程.
这里也有几个问题,怎么获取到鼠标点击了某个GameObject,可以使用UGUI自带的EventSystem,也可以自己检测鼠标左键按下,根据当前摄像机生成一个射线,检测射线是否与GameObject的BoxCollider相交.游戏模式这个值保存在哪儿,自己写个GameCore?然后怎么跳转到下一流程,怎么划分流程,流程与流程之间是什么样的关系,怎么样存储这些流程,在什么时候执行什么流程.
假设你现在角色已经选好了,对手也确定了,然后点击开始战斗了.
开场,双方都应该是待机状态,或者说待机动作.那这个动作怎么来,你是用的2D图片还是3D模型,如果是2D图片,那这些序列帧是从哪儿来的,怎么知道有什么序列帧,哪个序列帧是什么动作,序列帧播放速度是多少.循环播放该怎么处理,不循环播放该怎么处理.3D模型,模型资源在哪儿,什么时候加载进来的,材质,贴图,shader,以及预设上有没有附带其他的东西,预设在代码中是用哪个类去存储和访问的.模型该怎么播动作,Animation?Animator?
假设可以正常播放动作了,
你按下一个键,控制的角色需要放一个技能.技能包含什么,动作,特效,基本就这两方面,另外看不见的还有攻击范围,攻击范围还分可移动的范围和不可移动的范围,比如打出一个直拳,那就是不可移动的攻击范围,你打出来在哪儿,就判断哪儿的范围.你发出一个冲击波,冲击波会动,一直飞向你的对手,这就是可移动的攻击范围.当然这两个其实都是一个东西,只是一个移动速度为0,一个移动速度不为0而已.
按下按键,角色开始做一个直拳的动作,当拳头伸到最远处时进行碰撞检测.这是理想的过程.嗯.所以怎么才知道拳头伸到最远了,其实可以算出来,或者预先算好,反正动作固定的,只要播放速度不变,伸到最远的时间也是不会变的.比如第10帧时拳头伸到最远,每秒30帧,那就是0.333秒的时候,也就是说当你按下按键过后的0.333秒时就可以判断是否击中了敌人.既然碰撞检测,那就要有碰撞双方的碰撞体,敌人可以是一整个碰撞体,你的拳头是一个碰撞体.这只是看起来.实际上只是在你的拳头的位置上有一个BoxCollider,因为你的动作是固定的,所以这个BoxCollider实际上跟你的拳头没有半点关系,因为我也不知道你现在拳头到底在什么位置,我只知道需要在0.333秒时在角色本地坐标系下的指定坐标上启用或者创建一个BoxCollider.敌人的碰撞体呢,就是在敌人的本地坐标系下的指定坐标启用或者创建一个BoxCollider,当前,敌人的这个BoxCollider应该一直都启用的,表示你在任何时候都应该能有机会打中敌人.虽然两边的BoxCollider都是本地的,但是检测是在世界坐标系下的.怎么进行碰撞检测,你可以使用MonoBehaviour的OnTriggerEnter或者你已经知道了这两个碰撞体,自己计算来检测.
假设已经释放一个技能打中了敌人,然后敌人应该做出反应吧,怎么反应,直接飞出去落到地面弹两下,还是双手抱肚进入僵直,还是向上击飞?还是直接趴地上.
我也就是简单说了一些要实现你的需求应该会遇到的一些细节问题.涉及到的范围很广,并不是视频里面的哪些要什么就有什么,一点困难没有.其实真的很难.尤其是要提升细节表现时.
从需求出发,自己要做什么,怎么做,缺什么,做完以后,然后再回过头来想,哪些地方我可以改成什么样会更好.之前那样写,如果要调整一个数值,或者一个功能,要改很多地方,而且很容易漏掉东西,导致bug频繁.哪些地方代码很相似,却写了很多遍.哪些地方代码看起来的功能跟实际要实现的功能感觉差距有点远,哪些代码可以用更简单的方式来实现
发表于 2021-1-1 11:32 | 显示全部楼层
独立做游戏,自身没有10年以上功力,基本都很困难,这个困难是指如何准确地实现想法。
VR行业到游戏行业,哪怕是同一个工具,UE到UE,unity到unity,完全属于2个行业,所有的理念都不一样,也就说和0基础区别不大,还能怎么办,基础学起呗,准备好时间和精力,先投入个3-5年看看有没成果,然后你再决定是否继续投入吧。
发表于 2021-1-1 11:33 | 显示全部楼层
添加一些,除了设计方面,题主还缺细分能力, 抄的时候就靠这能力了, 这没啥好说的,从小的入手,比如你要做动作类的,就找个游戏分析有哪些系统,然后每个系统需要什么技术,一一实现,再组合即可。
以下为原回答:


取决于你想做什么规模的游戏。
        我是一个人做游戏的,游戏的体量自然不会太大, 所以做的是休闲小游戏类型。
        我已经发布到网络上的游戏是<猫咪生存日记>,可以在taptap上找到。
        先证明我有制作经验,然后来谈谈“无法做出游戏”这个问题。
        当然,我仅仅是个游戏业的边缘人物,所以回答仅供参考,不能盲目相信,还请各位业内大佬回答。
        看题主跟着教程做了一些游戏,并坦言自己做游戏的话会做成和教程一样。
        那么无法做出游戏的原因就在这里了:你缺乏游戏设计的经验。
1. 素材,美术音乐,可以买素材,当然能自己完成那当然好, 本人呢没事会画画,所以美术是自己画的,但音乐是在艺术共享网站上白嫖的免版权音乐,网络上搜一下应该可以搜索到。
        上面解决美术音乐的问题,那么来看看设计。
什么是设计呢?有多少种?
1. 最简单的就是:抄。
        抄游戏最快,也不太需要太强的设计理念, 但不要抄得太死板,哪些地方不喜欢就改掉, 比如横屏改成竖屏,功能增加一些减少一些, 不要照搬。
2. 稍微费点儿心思的,组合。
        就是把两个或多个不同的游戏组合成一个。
比如:
        俄罗斯方块+射击=方块消除。
        绝地求生+传奇=武侠义。
        贪吃蛇+球球大作战=蛇蛇大作战。
        等等, 实际上国内的大部分游戏无非:换皮(照搬),组合, 微创新,完全原创? 想多了,国内外也没完全原创的游戏,就算任天堂游戏,他也有一些设计来源于其他游戏,第一条提到的不要抄的太死板,意思就是要搞点小创新, 比如球球大作战加入道具系统, 或者加入个战争迷雾,是抄袭还是原创,取决于你加入的东西有多少, 比如最近米忽悠的“原神”,为啥一票人说他抄袭碰瓷? 就是加的东西太少了, 一眼过去和另外的游戏高度相似,那就难逃舆论攻击,但我们应该知道,这舆论攻击其实是一种宣传手段。。。


3. 创新游戏
        创新就是闭眼冥思就能想出来的?
        嗯,事实上确实有冥思想出来的,但是在你冥思的时候,是根据以往的见识,大量排列组合,然后构成一个勉强能用的概念,然后觉得可以就往上加元素,这个就是创新了,但这样比较麻烦。
        最好的办法是去找参考,然后突发奇想大脑组合出一个让你很惊艳的感觉,记录下来,这就是快一点的,如果大脑常常胡思乱想,就看一个普通寻常的事物也能迸发一系列想法,但合不合适就需要挑选了。
        写回答的时候我就想举一个原创的例子,然后大脑突然给出一片图像,以下为描述。
        <滴水>
        水从高空落下,掉落在草叶上, 由于重力将叶片压弯,然后弹起,把水滴向叶片指向方向弹去,以此循环,最终到达海洋。
        旅途中有食露的动物昆虫,有跃起的鱼儿,还有蚂蚁窝, 石头, 没有度过困难而到达海洋,就失败了。
        操作只需要按屏幕,按的越久水滴越重,也就是把叶片压得越弯,然后放开手指,水滴恢复重量,由于叶片的韧性将其弹起。
        一个原创游戏就初步设计完成了,但发现问题没有?
        描述中很多设计元素在其他游戏中就有,我仅仅是通过大脑排列组合出来,而最开始我大脑中只有水掉在叶片上的画面,随着深入,加入的设计点越来越多,那么游戏就越来越庞大。
        这里就可以得出了,原创游戏是你加入的元素与设计来自各不相同的游戏, 而不单单一款或几款,而且原创很可能撞车,虽然上面说是大脑临时拼出来的,但我很清楚,大概率在这世界上有同款或类似的游戏。
        而什么是真正的原创呢?
        答: 开辟一种类型,比如开辟moba类游戏的dota,开辟体育游戏的乒乓球,还有细分原创,比如体育游戏类别下的篮球、跑酷等, rts的红警、文明等,只是现在要普通人也需要用到原创这个词,所以原创这一词才成了大组合的代名词, 大组合顾名思义,就是游戏的设计来自于大量其他类别的游戏,其他设计行业也是如此。
        好了,例子举好了,那么来分析一下,怎么才能做出一个游戏?
        如果只是想做个作品面试程序,直接找个游戏抄一下是最好的,因为设计创新是策划去搞的。
        如果你是想自己做独立游戏,那么微创新的性价比很好。
        如果你很有时间,有精力,那么可以试试原创游戏,要把一堆不相关的元素组合在一起是比较麻烦的。但风险是很大的, 比如,上面那个我自称原创的游戏好玩吗??
        不好玩的老铁~,老老实实抄袭或者微创,你把能做出来的那些教程作品,添加些设计元素,就阔以咯~
ps:以上图片来自网络截图,如有侵权,联系替换。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-1-1 11:41 | 显示全部楼层
进入游戏行业不是要你做出游戏,而是要你某一块有强项。就算你能做出一个独立游戏,如果代码全靠抄,模型全靠下载,你也进不了游戏行业,最多你有钱自己开公司。
发表于 2021-1-1 11:46 | 显示全部楼层
做小游戏的话就可以了,一个完整的商业游戏还是很庞大的,一般去游戏公司也只要你实现部分模块就行了,而且角色控制器每种游戏根据需求写出来都不一样,都是按着需求来的,你看到人家已经做好的游戏的模块和功能能推出实现的思路就行了,
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-20 15:13 , Processed in 0.108884 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表