找回密码
 立即注册
查看: 989|回复: 15

[笔记] Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员?

[复制链接]
发表于 2020-12-31 17:44 | 显示全部楼层 |阅读模式
Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员?
发表于 2020-12-31 17:51 | 显示全部楼层
Unity 只是一个工具或平台。游戏编程还是要从各个方面学习和累积经验。
关于游戏程序员的知识框架,或可参考 miloyip/game-programmer,按兴趣拓展不同专业领域。
发表于 2020-12-31 17:59 | 显示全部楼层
初级Unity程序员:
transform.position = Vector3.zero;
transform.localScale = Vector3.one;
transform.eulerAngles = Vector3.zero;
高级Unity程序员:
transform.localToWorldMatrix = Matrix4x4.identity;
抖个机灵,就很开心。

本帖子中包含更多资源

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

×
发表于 2020-12-31 17:59 | 显示全部楼层
C#, C++,Python
数据结构
算法
设计模式,MVC
操作系统
碰撞检测
寻路与导航网格
计算机图形学
OpenGL DirectX3D
计算机网络
编译原理
三角数学
向量代数
线性代数
高等数学


资源管理系统
Excel转换
编辑器扩展
工具开发
音频/视频播放
模型拼接
动作融合


大场景优化
内存优化
渲染优化
性能优化
耗电和发热优化


ui渲染优化
ui框架
ui适配
各种ui功能业务逻辑


网络同步
关卡系统
战斗系统
技能系统
AI系统


自动打包
发布流程
资源热更
跨语言交互/接SDK
性能适配
兼容性适配
破解/反破解
反外挂


心态好
身体好
爱学习
能加班


所谓高级,就是初中级能干的事情你能干,初中级不能干的事情你也能干。
发表于 2020-12-31 18:07 | 显示全部楼层
一个UNITY高级程序员除了要有精湛的编程水平,对UNITY各模块的深入理解能力,更需要的是一种作为高级程序员的担当。

当项目出现问题的时候,无论是开发过程中还是线上运营中,作为高级程序员应该第一时间顶上,配合其他部门核查问题的技术原因,高效安全的提供技术解决方案,并且协调其他程序员完成任务并且配合验收。

当碰见水平比自己初级的其他程序员,不要有不耐烦的心态,要想到自己也是这样成长下来的。要怀着分享的精神安排好自己的代码规范,方便别人理解自己的代码,必要时撰写文档或者画图来进一步降低沟通成本。

有良好的学习习惯,Unity的进步非常快,每个新版本都会有新的坑,新的特性,要时刻保持着学习的热诚,并将优质的信息分享给项目。

任何一家游戏企业,技术永远都是整个企业的核心支柱,所有员工的信心所在,不要轻视这个岗位,你每在这个位子上多投入哪怕1%的精力,整个企业能够更安全的开展更多业务的可能性就提高了很多。
发表于 2020-12-31 18:10 | 显示全部楼层
确实,如果只是堆砌工作量是没法做成高级程序员的。按传统的说法,要内外兼修:
1、学习和技术方面
Unity3D高级程序员必须在非常熟悉Unity这个引擎(也可以说工具)的情况下精通其他方面。比如:
    渲染,需要去了解计算机图形学相关的知识; 底层框架,需要真正的从无到有的跟过一两个项目,或者学习和参考成熟项目的架构; 网络,需要真正的了解整个游戏流程以及同步的多种具体做法和细节; 优化,这就多了。有框架、逻辑、渲染、内存、网络及各平台的兼容等等,优化是一种比较综合的能力。
这些要么精通其一或者兼修,但是由于Unity3D没有开源,需要从其他引擎或者其他地方去汲取相关知识。
2、心态和思想方面
能力越大责任也越大。如果是以“高级程序员”作为目标,那么最好在小事上也要严格要求自己。
    要有责任、有担当。 团队第一,项目第二,自己的想法放在后面。(这是一个简单明确的判断标准)。 锻炼好身体 :)。没有好的心情工作肯定受影响。 对大部分高级技术人员来说,想进一步提高都不容易。保持学习,不仅限于技术方向。 与其他成员沟通、特别是对新人的沟通是否顺畅,可以当做鉴定心态的一面镜子。
当你责任足够大的时候,你的缺点也会放大为整个项目、整个团队的缺点,不可不慎重。相对的,如果能保持好的心态,成为“高级程序员”也只是时间问题。


PS:虽然说的很漂亮,要做到真不容易【捂脸】。共勉。
发表于 2020-12-31 18:11 | 显示全部楼层
大部分回答都是跑偏的!
Unity,发展到今天已经非常明显了,是面向个人以及小团队使用的工具,从授权费用就很明显了。
既然是这样,就必须抛弃这个Unity高级程序员的这个理念,Unity公司希望开发者是一个整合者,一个创意实现者,技术、美术、音效等可以通过商店来获得平衡,哪怕是老竞争对手Unreal,也是试图走这条路,因为游戏,最核心的不是技术,是创意,和电影、书籍等其他文化产品是一样的,一旦重技术,最后就变成炫技了,失去了初衷。
最后说一下,那些推荐说什么要学习要掌握的,基本都是废话,就像那些公司开出来的招聘条件,按那条件进去的一伙如此优秀的人,居然没有产出跨世纪大作,简直不符合常理嘛!
因为人的精力是非常有限的,而做开发和社会上生存是一样的,当需要什么东西的时候,再根据实际情况去研究学习,否则无头苍蝇一样东看看,西搞搞,最后发现只能落得一地鸡毛。
发表于 2020-12-31 18:17 | 显示全部楼层
把UWA问答(UWA问答: 侑虎科技官方问答社区)上的问题全部尝试试验和解答一遍,你对Unity引擎也就算是精通了。重剑无锋、大巧不工。
 楼主| 发表于 2020-12-31 18:26 | 显示全部楼层
慧眼识别好的策划和产品?
发表于 2020-12-31 18:30 | 显示全部楼层
题主可以去网上搜索写关于高级 Unity 程序员的招聘信息,整体上的一个技术要求。这里我举上海的一家企业招聘的信息:
年龄27-40岁;学历不限、4年以上的经验;薪资待遇:20-50万
任职资格:
1、有扎实的3D图形学基础;2、精通directX或openGL;3、有良好的面向对象设计能力,熟悉常用的设计模式;4、熟悉C++并具有良好的编码习惯,有良好的文档及注释习惯;5、有Unity3D或Unreal引擎经验者优先。
从公司任职要求上看也就可以说明高级程序员应该具备的能力了。然后现在进行更深层次的分析。
一、技术方面
Unity 作为3D游戏引擎必须要掌握固定和可编程流水线,这里是涉及到一些矩阵变换的知识,若是不了解或者掌握的不全面可以着重学习。
Unity 要知道是自己的坐标系,它的世界坐标系是左手坐标系,然后还要掌握屏幕、UI、视口坐标,知道其原点位置,你在做项目是可能会让你进行三者之间的变换,不熟练的可以去做提升。
函数的执行顺序3D碰撞体的执行效率,这里重在一个练习和逻辑思维锻炼,像Awake、OnEnable、球体、胶囊体、立方体等内容熟练掌握。
程序的优化处理,内存的管理这个是Unity程序开发中最重要的一部分,也可以这么说,你能不能成为高级程序员就看它了。你要知道针对UI内存管理使用的是图集方式,而我们都知道Unity 自身的图集功能是浪费内存,不管图集是否填满,都需要在内存开辟一些空间,你要清楚可以通过Texture Packer工具去节省没有填满的空间,也要明白UI加载问题是采用分类打包图集的方法,这些都是你应该掌握的。另外,还有对3D场景资源的管理,模型、骨骼数量、材质数量都要去了解学习。具备这些的条件你才有可能会成为高级程序员。
架构设计方面,也要注意,代码的编写。比如设计模式、工厂模式、MVC模式等等,都是要掌握了解的。
另外对于String,StringBuilder等,它们之间的区分要搞清楚。
对不同的机型的适配处理技术验证等都要掌握清楚。
二、综合能力
一个Unity 高级程序员除了要有高超的编程技术,对Unity各模块的深入理解能力,更重要的是要有担当,有责任心
在项目出现问题时,无论是出现在哪个过程中:开发、线上运营等等,身为高级工程员的你应该立马去查看,然后配合其他同事审查问题中的技术原因,快速高效率的提出解决方案,从而完成整个项目。
面对新人时,没有表现的不耐烦,他们遇到事情不做处理,从而耽误整个项目正常进程。要怀抱着分享精神,去帮助他人。同时合理简洁的安排好自己的代码规范,方便他人快速理解你的代码意思,必要时候可以编写文档或者以图形方式来解决相互之间的沟通问题
有一个良好的学习习惯,编程语言是要经常做练习,多学习才可以掌握,不要认为自己编程的那点知识掌握了,就不再严格要求自己,当有新技术出现时,对应出新的特性,你不去学习掌握,将来的你必然淘汰。要时刻保持学习的态度,并把一些好的内容融入进整个公司项目中,让其更加完善。
初级和高级一个区别在于编程思想,如果你是光想着为了实现一些功能而去编写,但是不注意代码本身质量,这样你的代码没有扩展性和可读性,你的代码只是一个一次性代码,对于整个项目和其他同事影响很大,所以好的程序员编写代码同时,既可以实现功能,又可以让整个项目产品有发展空间。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-8 02:53 , Processed in 0.099653 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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