找回密码
 立即注册
查看: 753|回复: 19

[简易教程] c# for unity到底应该怎么去学 在这之前我应该学会什么?

[复制链接]
发表于 2021-4-28 09:30 | 显示全部楼层 |阅读模式
是这个样子的,本人现在开学大三,数字媒体艺术专业,是个娘们 。
发表于 2021-4-28 09:39 | 显示全部楼层
赞同 @皮皮关 的说法。
用Unity做游戏和自己写引擎有一个重要的区别,就是Unity你得熟悉他里头的套路,否则写不出来任何东西。所以用其他人的引擎就是这点麻烦,你得习惯他里头的东西,不是光会一些语言就可以的。
所以你要做的,就是和皮皮关说的那样,先学一部分C#,具体学到哪一步,首先你要看得懂教程里头的代码,其次你得知道为什么在Unity里要调用这个调用那个,就行了。
然后你就开始做游戏。我这里给皮皮关补充一下,就是怎么选取自己要做的游戏?很多人在这里就会陷入两难的问题,要不是不知道自己想做什么,要不是自己想做的太难了。那么我这里的建议就是——跟着电子游戏的历史走。
一般来说历史越早的游戏,技术上相对简单一些。所以上来你可以做Tetris、Galaga、Frogger这种只有输入输出和基本动画、规则又及其简单的二维游戏。其实这些游戏一样令人上瘾,长盛不衰,因为它们代表了先贤对游戏本质的理解,而没有后来层层叠加上去的东西。所有后来的同类型游戏,都可以抽丝剥茧还原来这些最初的形式。(我这么说有点夸张,大家理解理解意思)
如果在制作过程中你觉得C#的基础不够了,那就再回去学一点。学一点再回来把游戏完成。这时候不用去纠结什么代码的优美,以后你会强迫自己做到的,相信我。
接下来就可以做卷屏的platformer,代表作就是Super Mario,当年的红白机上没有一千个也有五百个类似的游戏,选几个自己喜欢的就可以了。记住你每做一批游戏,最好都比上批游戏多一点东西。这是契合一万个小时原则中刻意训练的原理——如果每一批游戏都差不多,怎么锻炼得到呢?进入到这批游戏,你会发现由于可以不断地卷屏,游戏的内容比之前丰富多了。如果技术上跟得上的话,你可能会考虑到在Unity中制作一款专门供自己使用的编辑器,或者给Unity制作一些插件来完善自己的工作流。此外,既然游戏的内容丰富多了,你也将会琢磨一些程序架构、序列化和反序列化的知识。还是那句话,没必要做的最好,没必要上来就逼着自己走ECS,目前还是需要做出东西来,如果想自己造轮子,那就尽情的造,此时不造更待何时?
于是你又会觉得编程有点跟不上了,也会隐隐约约地觉得,好像编程不单纯是语言的问题,而是一种方法论。随着游戏越来越复杂,它会迫使你考虑一系列编程上的问题,因为再也回不到那个一屏打天下的时候了。
随着你编程越来越精进,可以考虑做更复杂一点的游戏了。可以尝试做一款RPG,简单的那种就行。RPG和之前的游戏相比更加复杂,所谓麻雀虽小五脏俱全,有对话、物品栏、更多的Scene、等等。RPG可以说是这条学习路径的一个里程碑,代表着你能够独立完成一款相对复杂的游戏。他对你的要求也是比较高的,需要你对一些基础的数据结构和算法有一定了解。总体来说,当你能够独立制作一款RPG,就证明你已经双脚跨入门槛了。
发表于 2021-4-28 09:43 | 显示全部楼层
首先,理想的游戏开发学习应该像下面这样:
编程基础、理论知识的学习,应当与开发实践互为补充:
    从做小游戏开始,发现自己不懂的知识点。通过学习基础,把不懂的知识变成已知的知识。再把新学到的基础知识运用在游戏开发中,通过实践真正掌握它。如此循环往复,走上大牛之路。


题主目前的情况是长期停留在第1步,从第1步到第2步的阶段受到阻碍。题主也提到:
我现在面临的问题就是c#的学习,我不懂我现在应该通过游戏案例教学去通过案例学习还是单独学习c#教程。或者说有什么好的学习方法或课程的推荐吗。
个人强烈建议,专心单独学习C#,不用学得太深,只需要能看懂你现阶段已经写过的脚本的程度。其实这个要求已经不低了,因为照着视频教程写出来的脚本,写的时候理解程度接近于0。
学习C#时一定要做一些专项练习题,循环、排序算法、数组操作等等。不要嫌麻烦,磨刀不误砍柴工。

本帖子中包含更多资源

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

×
发表于 2021-4-28 09:51 | 显示全部楼层
1、学习c#语言,基础语法,System名空间基础库,特别是容器相关。
2、开始用unity做小的游戏demo,学习unity API与编辑器。
3、学会用ilspy看c#编译出的dll,知道c#语言有哪些语法糖会产生内存分配,明白box与unbox何时会发生。
4、学会编写与使用内存池,减少频繁内存分配,尽量增加GC触发的间隔时间。
5、在xcode上看c#翻译出的il2cpp代码,了解il2cpp的工作原理。
学完这些应该差不多了,之后就是各种专业技术学习了。
发表于 2021-4-28 09:52 | 显示全部楼层
分隔符下面的有点唠叨所以长求总:
创造力一部分来源于自己已经知道的东西,哪怕只是知道概念,用的时候去查也可以。
C# 方面,查阅微软的 C# 指南学习变量类型、循环、选择、函数、结构体和类等基础概念,记住一些 .Net 库提供的常用工具比如列表、字典、集合。
Unity 方面,知道 Monobehaviour 脚本的几个特殊函数的作用,记住 Unity 的工作流基于预制体,在 Unity 你可以从磁盘读文件进来,可以做动画,不需要用脚本实现一切。
既然你的目标不是专门的程序员,以你的制作目标出发,实现功能为王。


看你的专业,游戏制作铁三角里的定位应该更偏策划或者美术。从这层认知出发我会想说别被脚本的事耽搁了,像 rpgmaker 这样的可视化脚本插件应该能作为辅助。
但如果你认同我的立场——编程本不难,感到难只是没有找到合适的方法——依然可以尝试脚本和编辑器预置的工具实现游戏逻辑,在遇到问题时查阅 Unity 文档 和 C# 指南 。
你需要的所有编程基础只有脚本中的变量、分支和循环、函数和C#的属性、结构体和类、点net库提供的列表集合字典之类的小玩意,还有一点点关于继承的知识。所有概念都可以在微软提供的指南里找到。
对 Unity 中的 Monobehaviour 脚本而言,有一些对引擎有特殊含义的函数,比如 Start、Update、OnDisable,只要记一下就够了。
为了做出完整的游戏,最应该关注的是功能本身。Unity 的工作流程基于预制体,记住这一点很有帮助。确定实现功能需要的组件应该包含的内容,组装节点和脚本,制作预制体,在游戏场景放置预制体或者把预制体文件拖进任何一个名字叫 Resources 的文件夹里然后用脚本加载(如果你的游戏像《植物大战僵尸》那样需要动态生成很多敌人,这是个可行的方法)。
最后,你可以利用的工具还有很多,比如从磁盘读取文本表格、使用 ScriptableObject 储存配置信息、使用帧动画记录特定的动作,不要把所有的工作都压在脚本上。
发表于 2021-4-28 09:54 | 显示全部楼层
啊,就学c#就好了,不过只要学到变量类,函数怎么写就行了。其他的数据结构,算法就可以看了。然后调用unity api实现简单的移动,就这样
发表于 2021-4-28 09:58 | 显示全部楼层
太菜的话去泰课在线看教程做游戏。c# 一本c#图解就够了。然后写demo,写完demo找工作。
发表于 2021-4-28 10:03 | 显示全部楼层
会一点点c#就可以开始学unity了,学unity的时候要边看边敲,不一定要记住当时理解就好了,大概过一遍,然后一边加深c#一边找实际的项目练练,就b站上的黑魂复刻左右的难度就可以,过一两个就基本上能自己开始独立开发,当然难一点的可能要看一边文档,然后感觉差不对了可以去看看shader、图形数学等,也顺便看看lua或其它脚本语言,也挺有意思的。
发表于 2021-4-28 10:10 | 显示全部楼层
如果英语还行
或者想顺便提升一下英语水平
去英文官网的培训计划走一圈吧
把自己感兴趣的部分都做一遍就挺好了
进阶就是刷GitHub unity3d开源做的很好
有时间看看源码提升一下细节的理解
发表于 2021-4-28 10:13 | 显示全部楼层
首先要搞清楚两件事:
1、做游戏并不一定需要你“会编程”
2、对于做游戏来说,“会编程”是不够的


首先第一件事,做游戏和“会编程”并不是完全绑定的。诚然,会编程的话,做游戏会比较随心应手;但即便你不会编程,市面上也有很多代替工具,比如说playmaker,bolt(最近免费了),都是图形化的界面,对于非常抵触编程的人,是非常值得一试的
而如果不限定在unity之内的话,就有更多各种各样的专用引擎(比如出了rpg maker的角川为了捞钱又出了一堆类似的引擎);而如果更加宽泛一点的话,使用某些知名游戏的关卡编辑器也未尝不可,制作mod也是一种不错的开展方向
当然,任何妥协都会造成作品质量的下降,会使得它和你原先的设想相差得越来越大--但这种偏差并不罕见,我们应该学会接受这一点


第二件事,只是“会编程”是不够的。如果你在那么前期就已经遇到了困难,对于编程中一些高级的概念,你就更不太可能毫无障碍就理解了。总的来说,剩下两年的时间,实际上是完全不够用的--如果你想从0做出一款游戏的话。


你也说了,看教程就能顺利做出来--这是因为,教程就是这样一种东西啊!让你去展开,去远离教程,做自己的东西的时候,你才会发现真正的困难远在你的理解之上。
总的来说,
一、如果你们专业不要求代码量的话,建议找会编程的人合作。你能处理其他一切事宜(美术资源、游戏设计)的话,会有不少人愿意合作的。
二、如果要求代码的话,你应该首先好好学习编程本身,可以用unity引擎,但不应该做游戏,而只是当作环境,验证想法。


当然,你要是直接跟着毕设等级的教程做,并且自己不做一点修改的话,那倒也没什么问题了
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-5-21 23:39 , Processed in 0.097938 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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