David是一名软件和视频游戏开发者,专门从事Unity开发. He has worked on various projects, including game development, web development, augmented reality, and virtual reality. David使用ShaderLab, Cg和hsl开发了着色器和后处理效果. 他对图形和着色器开发充满热情.
United StatesToptal Member Since September 15, 2022
Christopher是一名Unity开发人员,在各种项目上拥有超过十年的经验, from games to business applications, including mobile, PC, 以及HoloLens和Vuforia等混合现实解决方案. 他的两个应用程序已经进入了各自类别的前十名, and one of them, Yumi Story Dice, has also been featured by Apple. Christopher正在寻找使用Unity引擎的任何领域的兼职自由工作.
胡达七年前进入游戏行业,从事过不同类型的游戏, including cards, strategy, casual, and educational, for platforms such as PC and mobile. 她有扎实的游戏设计知识和经验,包括编写GDD. 在Unity 3D和虚幻引擎的专业知识, Huda can use Git and pipelines, including GitHub, GitLab, Bitbucket, GitHub Desktop, SourceTree, and Git command line.
Marc-Antoine是一名多才多艺且富有创造力的Unity程序员和游戏设计师,拥有8年以上的编码经验和5年以上的游戏开发经验, 包括在育碧工作《欧博体育app下载》,在华纳兄弟游戏公司工作《欧博体育app下载》. In the past three years, Marc-Antoine决定成为一名全职自由职业者,并参与了20多个游戏项目, 包括他自己的合作解谜冒险游戏《欧博体育app下载》.
Daniel于2006年开始工作,现在被同行视为高级软件工程师和Unity 3D和JavaScript专家. 在他的职业生涯中,他作为一名自由职业者,既独立工作,也与他人合作. 他过去的队友可以保证他可以快速融入跨学科团队和任何项目类型(UI/UX), front-end, game development, and so on). 丹尼尔是一个积极主动的人,喜欢应对新挑战和使用新技术.
Nebojsa拥有软件工程硕士学位和十年的开发经验, 包括在一个经历过两次创业加速器的游戏项目团队中工作. 这段经历让他在游戏开发和创业方面有了坚实的背景. Recently, 他一直专注于VR/AR开发, emphasizing its appliance in sports, education, firefighting, and the military fields.
Currently, there are 4.500万注册Unity3D开发者, 它是目前最流行的游戏开发软件平台. 爱好者和专业人士都可以访问它, and thus, 在面试过程中,你可以期待各种水平的开发人员. 为您的特定Unity3D需求找到合适的工程师可能具有挑战性.
这份招聘指南不仅向你展示了如何识别最佳候选人,还将帮助你找到适合你项目的理想开发人员, 还有如何定制你的面试过程来满足你的特殊需求.
Clients Rate Toptal Unity or Unity3D Developers4.4 / 5.0截至2023年12月24日,平均有235条评论
Testimonials
没有Toptal就不会有Tripcents. Toptal Projects使我们能够与产品经理一起快速发展我们的基金会, lead developer, and senior designer. 在60多天的时间里,我们从概念到Alpha. 其速度、知识、专业知识和灵活性是首屈一指的. Toptal团队是tripcents的一部分,就像tripcents的任何内部团队成员一样. 他们像其他人一样贡献并拥有开发的所有权. We will continue to use Toptal. 作为一家初创公司,它们是我们的秘密武器.
与我合作的开发者都非常出色——聪明、有动力、反应灵敏. 过去很难找到高质量的工程师和顾问. Now it isn't.
Ryan Rockefeller, CEO
Radeeus
Toptal立即理解了我们的项目需求. 我们遇到了一位来自阿根廷的杰出自由职业者, from Day 1, immersed himself in our industry, blended seamlessly with our team, understood our vision, and produced top-notch results. Toptal使与高级开发人员和程序员的联系变得非常容易.
Toptal让寻找合格的工程师变得轻而易举. We needed an experienced ASP.. NET MVC架构来指导我们的启动应用程序的开发, Toptal在不到一周的时间里为我们找到了三位优秀的候选人. 在做出我们的选择后,工程师立即在线并开始工作. 这比我们自己发现和审查候选人要快得多,也容易得多.
At Toptal, 我们彻底筛选我们的Unity或Unity3D开发人员,以确保我们只匹配您与最高水准的人才. Of the more than 100,每年有5000人申请加入Toptal网络, fewer than 3% make the cut. 你将与工程专家(而不是一般的招聘人员或人力资源代表)一起了解你的目标, technical needs, and team dynamics. 最终的结果是:经过专家审查的人才从我们的网络,定制匹配,以满足您的业务需求.
我可以在不到48小时内通过Toptal雇佣Unity或Unity3D开发人员吗?
取决于可用性和进度, 你可以在注册后48小时内开始与Unity或Unity3D开发人员合作.
Toptal Unity或Unity3D开发者的无风险试用期是多长?
我们确保您和您的Unity或Unity3D开发人员之间的每次约定都从长达两周的试用期开始. 这意味着你有时间确认订婚是否成功. 如果你对结果完全满意, 我们会给你开时间单的,你愿意多久我们就多久. 如果您不完全满意,我们不会向您收费. From there, we can either part ways, 或者我们可以为您提供另一位可能更合适的专家,我们将与他开始第二轮谈判, no-risk trial.
What type of talent does Toptal have?
我们的平台拥有各种各样的技能、经验和背景. 我们的自由职业者包括软件工程师, user experience designers, project management experts, 从产品经理到曾在谷歌等领先公司工作过的财务专家, Microsoft, Amazon, and many more.
Toptal还提供哪些服务?
Besides our talent matching services, 我们还像开发公司一样提供web和应用程序开发服务. Through our Toptal Projects team, 我们组建由高级项目经理组成的跨职能团队, web developers, app developers, user interface designers, and other technical skills. 我们的团队成员遵循定义良好的开发过程来构建功能齐全的解决方案.
Share
如何聘请优秀的Unity3D开发人员
The Challenge
在撰写本指南时,有 4.500万注册Unity3D开发者它比其他任何视频游戏开发软件都更受欢迎. 它可以制作手机游戏,也可以制作增强现实和虚拟现实游戏. 爱好者和专业人士都可以访问它, 因此,在面试过程中,你可以期待各种水平的开发人员. However, that is only half of the battle, 因为在Unity3D开发平台中有广泛的技能集. 本指南不仅将帮助您识别和雇用Unity3D开发人员, 但这也将帮助你确保游戏引擎开发者能够完美地满足你的项目需求.
Unity is extremely diverse, 因此,作为一名Unity3D游戏开发者意味着你必须拥有广泛的主题经验. This is a critical point to make, 因为你的面试对象可能是顶级Unity3D游戏开发专家, 但仍然不适合你的需求,因为他们的技能可能不一致.
理想情况下,你需要一个“以前做过”的候选人。. 例如,如果你正在制作一款3D主机游戏,他就应该在此之前发行主机游戏. Alternatively, 应聘者可能是优秀的2D手机开发者, 虽然他有可能很快掌握3D技术,但这不是我们讨论的重点. To go even further, 即使他在你所瞄准的特定平台上有经验, 你可能想把注意力更集中在他完成的任务上,并将它们与你需要的任务进行比较. Unity3D开发者发行了一款大型3D手机游戏,这听起来可能令人印象深刻, 但如果他的经验仅仅是游戏的UI/UX, 他可能无法帮助你为即将问世的游戏创造AI或游戏逻辑.
Thus, 你必须明确自己的目标平台, and what skill sets you will require. 在你开始找工作之前,这里有一些问题需要在心里回答.
而Unity能够轻松地将游戏部署到各个平台上, 应聘者必须在你想要的平台上发行过至少一款游戏, 因为在开发过程中,每个平台都有自己的细微差别. For example, 由于HTML5画布的安全限制,WebGL目标不支持一些库和特性.
问:这个项目是2D还是3D的?
而Unity3D最初只支持3D和带有第三方插件的2D, it now supports 2D projects natively. 许多开发者在这两方面都有经验, 但有些人可能更倾向于这两种环境中的一种, 因为它们都有各自的技术障碍. For example, 3D开发可能需要更广泛的摄像头, lighting, textures, and models, 而2D开发可能更关注精灵, animations, and tweening.
申请人是否有使用Unity3D的经验 NetworkManager 类,或者有使用RESTful API处理自定义后端的经验? 验证申请人使用后端服务经验的一个示例问题可以是:“您如何从Unity3D访问RESTful API ??“可能的解决方案包括使用Unity WWW class, HttpWebRequest,或使用Unity3D的资源存储和下载 Best HTTP. The Best HTTP 要花钱,但在很多情况下,这是值得的 WWW class is missing a few features and HttpWebRequest is not supported on all platforms.
问:这个项目会有单人AI吗?
评估某人AI能力的范围不在本指南的讨论范围之内. However, 一个好的起点可能是问他们如何在网格上的两个方格之间导航. 解决方案应该包括它们递归地检查相邻的方块,同时跟踪它们已经访问过的位置,直到到达目的地. 接下来的问题可能是如何确保解找到最短距离. In this case, 它们将需要跟踪递归过程中行进的距离,并忽略任何超过找到的最小距离的路线.
最新的Unity版本5提供了自己的UI uGUI, 但在目前的形式下,它有一定的局限性,并且缺少许多可以被认为是标准的组件, such as drop down menus. Other highly used UI platforms are NGUI and 2DToolKit. NGUI 可能是最受欢迎的选择吗, 因为它支持开箱即用的小部件的数量, but it can be complex. Bottom line, Unity’s native uGUI 是否应该使用,只要它的基本特征涵盖了项目的需要. If it does not, then NGUI is worth considering. Alternatively, 如果受访者选择了不同的工具集, 然后他们应该能够给出合理的理由.
Technical Questions
问:请解释什么是预制件,什么时候使用.
A prefab is a template for a GameObject. 它包含对象本身,以及附加到它的子对象和行为. 预制件很有用,因为它们可以重复使用, and if you make changes to the prefab, 它将更新项目中的所有实例. 例如,在游戏《欧博体育app下载》中,可以将预制件用于小行星. 开发者可以通过参考预制构件在太空中生成多个相同的小行星. Later, 如果美工想要改变游戏中所有小行星的颜色, 这就像在单个预制件中改变一个纹理一样简单.
前面提到的减少延迟的一个可接受的做法是创建对象池. 对象池是在使用前实例化的对象数组. 当有大量的项目需要使用时,这一点尤其有用, such as the asteroids in our example. 脚本可以加载所需数量的对象,并在数组中存储对每个对象的引用. 当小行星生成时,它们将从阵列中移除,并在场景中可见. 当小行星爆炸时,它们将从场景中删除,并存储在阵列中以供重复使用.
缓解这个问题需要在内存崩溃和CPU延迟之间取得平衡. First and foremost, 应该使用编译时宏来确保优化和裁减只影响低端机器, 在高端机器上,对象池仍然被充分利用. On the low-end machines, 应该谨慎使用对象池和缓存,因为只有高频选项应该放在池中, 并且尽可能少地使用物体以获得更好的体验. 低频对象可能需要在运行时启动, 在低端设备上造成偶尔的延迟, 或者,可能需要做出设计决策,为低端机器移除这些对象. 例如,粒子效果和爆炸可能需要从低端体验中移除. 没有粒子的流畅游戏比有粒子的滞后游戏更受欢迎. 缓存的资源应该在不再使用时立即清除. 有些机器提供低内存警告,这有助于确定何时需要清除缓存.
首先,继承意味着一个类扩展另一个类. An example would be a class called Orange 可以扩展父类 Fruit. The class Fruit 会定义诸如种子类型之类的属性吗. Orange inherits properties from the Fruit 类,所以它也有种子,但它也扩展了 Fruit 类的附加属性,如具有剥离.
另一方面,组合用于组合多个类. In the Orange example above, there would be no Fruit class. Instead, we could have a class for Seeds and another for Peel. The Orange would then store references to the Seeds class and the Peel 类,因此它将由这些类组成.
Unity uses composition extensively, 因为它的基础依赖于实体组件或实体行为体系结构模式. 在这方面,场景中的一切都被认为是一个 GameObject, or entity. Each GameObject 包含定义它的行为或组件的列表,根据定义,这是组合.
Inheritance
在继承设置中,很可能需要三个类. A base class which we will call Enemy,然后是我们将调用的两个派生类 Asteroid and AlienShip. 基类将处理两个类共享的所有功能 Asteroid and AlienShip such as tracking hit points. 派生类将添加额外的功能. For example, the derived AlienShip 能处理飞船的飞行和射击功能吗.
Composition
在组合设置中,我们很可能会以相同的方式开始 Enemy class that handles the hit points. But instead of extending it, 我们将使用Unity的实体行为模型为其添加额外的行为(类),从而添加我们所寻求的功能. 要创建外星飞船,我们可以创建一个处理移动的类(MovementBehavior),另一个负责射击(ShootingBehavior). 然后我们将这三个类连接起来, Enemy, MovementBehavior, and ShootingBehavior to a GameObject to create the alien ship.
乍一看,继承似乎更直观, 但随着游戏设计的复杂性和新功能的增加, 它变得非常难以管理,因为每次更改都可能更改所有派生类. Composition, on the other hand, 是非常灵活的,并允许开发人员创建新的功能, or in this case enemies, 只需添加和删除行为. 也就是说,这两种设置都是适合的,具体取决于场景. 在面试过程中,关键是要确保被面试者知道这两种选择都存在, 并且可以解释为什么他们会选择其中之一.
Q: Explain what Draw Calls are.
Draw Calls是处理器在渲染场景时需要改变材质的次数. If there are 100 objects in a scene, and each have unique materials, then there would be 100 draw calls. However, 如果每个对象使用相同的材料或精灵表, 然后,所有100个对象都可以在一个draw调用中绘制.
Q: How can you reduce Draw Calls?
Draw调用可以通过批处理图像来使用相同的材质或精灵表. 例如,在一款2D游戏中,我们可以让一个角色的头部、身体和腿部都有精灵. 每个精灵都是独一无二的,因此需要三次绘制调用来渲染角色. To reduce this, 我们可以将这三个精灵组合成一个单一的精灵表, 然后绘制调用将减少到一个,因为所有三个部分可以一次绘制.
一个好的后续问题是,角色拿起一件斗篷,它出现在头部上方,但在身体后面. 斗篷和角色在不同的精灵表上. 在两个精灵表上渲染角色和斗篷需要多少次绘制调用? The answer is three. 即使涉及到两个精灵表,z轴顺序也会导致三个开关发生. 首先,角色精灵表用于绘制头部. 然后,使用披风精灵表绘制披风. 最后,使用角色精灵表绘制身体和腿. 身体和腿不能与头部同时绘制,因为斗篷出现在它们之间.