找回密码
 立即注册
查看: 432|回复: 0

使用 Unity3D 会降低程序员的编程能力吗?

[复制链接]
发表于 2022-3-26 12:29 | 显示全部楼层 |阅读模式
答题多了,遇到过各种奇怪的问题。我发现不应该急着肯定或否定,可以先分析一下问出这种问题的原因或情景。
某人会有“怀疑Unity用多了会降低编程水平”这种想法,应该不是无聊闲的瞎想,我认为是确实可能产生的怀疑。
这种怀疑产生的情景,应该是在Unity和编程都处于进阶阶段的时候。因为初学者知道的太少,还不足以产生这种疑问;而编程达到一定水平的时候不可能有这种疑问。
1. 从Unity实例直接学习的小弊端

现在利用成熟游戏引擎开发游戏,它的思路和技巧已经和曾经的方式有很大不同。比如我们的B站频道(哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili)、知乎专栏(游戏开发入门指南——Unity+),里面有各式各样的游戏项目,其中不少都满足:效果酷炫,而且代码不多。
这就产生一个很奇怪的现象:某人明明连贪食蛇都不会写,但是FPS、动作游戏却做的很漂亮。
这种现象在现在流行的“视频实例教程”中非常明显,包括我们做的视频。用户兴致勃勃花了几小时,做了一个看上去很不错的游戏。但是做完的人里,不到三分之一的人领会了思路;三分之一的人能基本看懂,但是自己独立做不出来;还有三分之一的人连过程都看不懂。
如果是从学习效果看,这就很可怕了。因为“我做过的游戏”和“我会做的游戏”中间产生了巨大的落差。如果一个人已经做出来过“我的世界”、“大逃杀”,就可能很难再潜下心把无聊的“俄罗斯方块”、“2048”写好。
2. 初学Unity时,一些不太好的思维定式

如果写代码不多,但是会用Unity,经常有这种下意识的思维:

  • 需要判断角色位置——加碰撞盒,加刚体。
  • 需要跳跃和重力——加刚体,施加弹跳力。
  • 需要判断鼠标点击物体——打射线。
特别是碰撞盒,用途实在太多了 ,万物皆可碰撞盒 :)
然后就出现了这些问题:

  • 不用碰撞盒,如何检测贪食蛇是否吃到苹果?
  • 不用碰撞盒,俄罗斯方块如何检测落地?
  • Vector3的x、y、z为啥判断相等的时候总是不对?
  • 不用刚体怎么实现跳跃和重力?如果不用角色控制器呢?
其实你想想,小霸王上的马里奥、俄罗斯方块、打鸭子,游戏效果都不错,但是那时候哪有碰撞盒、刚体、物理系统、射线。要知道,小霸王只有2KB内存,5MHz主频,如果让它运行物理系统,恐怕一个小球都模拟不了。
3、只要持续前进就自然能克服瓶颈,继续提高

那怎么办呢?其实并不需要停止使用Unity,解决问题的方法永远只有一个:继续前进。
只要你独立做的东西更多、更加专业,那么你一定会遇到只用Unity自带的功能无法解决的问题。说一个常用的:游戏的背包。无论你用不用Unity,无论你用哪种语言,背包管理器本身的复杂性都不会有太大变化。还有好友、聊天、网络通信等等,重要的逻辑部分最终还是要自己写代码实现。
还有就是一些技术方面的练习。比如一个非常简单的问题,可能会问倒很多初学者:如何用Unity做一个最传统的贪食蛇游戏?
你会发现,几乎所有的Unity特性都不太用得上了,甚至最基本的Vector3都会捣乱。
进一步问:如果让蛇的运动变得平滑,不像传统贪食蛇那样一次走一格,但是游戏逻辑还是按一格一格来的,如何实现?这对编程基础不牢的人就相当有难度了。
等你发现这些问题都理解了的时候,再去玩现在的3A游戏,比如《塞尔达 荒野之息》,你会发现很多实现并不简单,不是我们一开始以为的那样。
比方说,塞尔达的主角控制大部分时候都是非物理的,但是某些时候会变成物理。随着学习深入,你会看懂其中的精妙之处。
总结

总结来说,用Unity不会降低编程能力。
甚至对于一定水平之上的人来说,Unity这种成熟工具会帮助他们进一步提高编程和综合能力。只有站在前人的肩膀上,才能看到更高更远的东西。
唯一的问题是,千万不要止步于那些Unity已经提供的、伸手就能拿到的功能。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-22 15:29 , Processed in 0.089513 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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