在游戏领域,很少有人不知道Unity 游戏引擎。它是跨平台的2D和3D游戏引擎,由Unity Technologies 开发,用于开发跨平台视频游戏,并延伸至基于WebGL技术的 HTML5网页平台以及 tvOS、Oculus Rift、ARKit 等新一代多媒体平台。

细心的玩家们,可以在《王者荣耀》、《原神》、《炉石传说》等手游,以及《逃离塔克夫》这样的 PC 大作上看到 Unity 的标志。

unity能开发哪些游戏(游戏引擎Unity被收购)(1)

8月10日晚上,游戏软件公司AppLovin宣布,将以每股58.85美元,总计175.4亿元的价格收购游戏引擎Unity Software,交易将以全股票的形式完成。

根据拟议的交易,Unity首席执行官John Riccitiello将继续担任合并后公司的CEO,而AppLovin首席执行官 Adam Foroughi 将担任 COO。

unity能开发哪些游戏(游戏引擎Unity被收购)(2)

△Unity 首席执行官 John Riccitiello

AppLovin是家什么公司?

AppLovin 是一家总部位于加州帕洛阿托的移动技术和应用营销公司,成立于 2012 年,在 2014 年之前以隐身模式运营。该公司旨在让不同规模的开发商通过其移动广告、营销和分析平台MAX、AppDiscovery 和 SparkLabs 来推销、分析和发布他们的应用程序。

AppLovin 于 2018 年 3 月成立了 Lion Studios,这是一家位于旧金山的移动游戏发行工作室,主要与游戏开发商合作发布和推广移动游戏。比较著名的游戏包括与中国休闲游戏开发商 SupertapX 合作开发的《恋爱球球》和《救救小姐姐》。

unity能开发哪些游戏(游戏引擎Unity被收购)(3)

AppLovin 还投资了不同的移动游戏发行商。2020 年,AppLovin 收入的 49% 来自使用其软件的公司,51% 来自应用内购买的消费者。2021 年,AppLovin 在美国纳斯达克上市,它通过 IPO 筹资 20 亿美元,IPO 定价每股 80 美元,估值达 286.4 亿美元。

unity能开发哪些游戏(游戏引擎Unity被收购)(4)

Unity游戏开发小技巧

1. 借助 Prefab 暂存数据

可以直接在脚本的 Inspector 上填写,然后把整个 GameObject 拖成 Prefab 暂存。等要用的时候再拖出来。

2. DontDestroy模式

在跨场景的时候保持某些对象一直存在,不必要每次都重新加载,譬如显示广告的模块。

3. 内置函数

Awake,Start,Update,FixedUpdate,LateUpdate 函数,令开发者直接往游戏循环里加内容,非常方便快捷。

4. Input

Input.MouseDown 在移动设备上也通用,对于一些对输入性能要求不高的操作,直接用它来代替 Input.TouchCount或者 RaycastHit 即可。

5. UGUI

新的 UGUI 支持多种 Camera 渲染,以及 RectTransform 里Anchor 的灵活配置,功能很强大。提前设计好的话,可以一套 UI 同时支持 iPhone4/5/6/iPad以及所有 Android 设备各种尺寸的分辨率。再也不必做多套 UI 来适应各种设备了。

6. Editor 脚本

可以方便在编辑器里扩展,对开发和摆关卡帮助极大。

7. 测试

测试运行时,可以在任意时候暂停游戏,重新调整数值,游戏对象的位置等等,然后再继续游戏。

8. Editor/Resources 目录

可以存在多个,且可以存放在任意目录下

写自己的插件或者代码库时可以自带辅助的资源。

9. Hierachy 层级

在 Hierachy 层级对话框,可以随时输入搜索关键字,然后一起选中筛选出来的GameObject,这个时候可以同时修改它们的相同属性。

10. 内置取色器可以暂存颜色

unity能开发哪些游戏(游戏引擎Unity被收购)(5)

11. 显示脚本的公用属性

脚本的公用属性在 Inspector 中显示时,可以用额外的修饰符控制其显示方式,取值范围等等,非常方便。

12. StreamingAssets 目录是用来存放不加密的外部文件

它还有一个极好的用途是存放测试数据。方便在 PC/MAC/移动设备上都能调用到同样的测试数据进行模拟处理。

13. 配合 Alfred 这款快捷启动的小工具

输入“us 关键字”即可快速调出Unity的 ScriptAPI,你是否也经常忘记 Collier/Trigger 函数的完整写法?

每次都需要从帮助手册里复制代码段?

14. Unity死机未保存场景

当你在Unity中编辑场景,突然死机时,可以在项目文件目录中找到Temp文件夹,双击文件夹,找到_Backupscenes文件夹,把后缀为.backup的文件后缀改为.unity,然后拖进Unity的Project界面里面,这样就可以还原死机前场景最后情况。

15. Inspector界面的数值栏自带加减乘除功能

从Unity5.1开始,可以在Inspector界面中的数值栏进行计算,比如:你可以在Transform里面的Position中X栏中加减乘除。

16. 随意移动模型预览视窗

在Project界面里面选中模型,在Inspector界面上会显示模型的预览视图,右击视图的上的双横条,模型预览视图就会跳出来,此时就可以像Scene,Game等视窗一样任意移动,放在你想放的地方,如果想让它变回去,只要关掉它即可。

17. 搜寻当前场景中哪些物件运用了指定脚本

在Hierarchy界面中的搜索栏中输入你想要搜索的脚本全名,即可找到哪些物件用了这个脚本,此方法也可以用来搜索哪些物体上有哪些物件,比如:Rigidbody等。

18. 在界面上查看private变量

在Inspector界面右击Inspector的标签栏,选择Debug。

19. 只让游戏运行一帧

先按下暂停键,再按运行键。

20. 通过Debug.Log获取执行此语句物件

在脚本的Debug.Log语句中加入gameObject,即Debug.Log("Test", gameObject); 脚本运行时点击Console界面中的输出语句,就能在Hierarchy界面中看到哪个物件执行了这个脚本。

21. 展开所有子节点

按住Alt,用鼠标点击包含子节点物件前的三角形,在Hierarchy界面和Project界面都可以使用。

22. 编辑时镜头跟随选中物件

在Scene界面中选中物件按F,镜头就会对准选中物件,并使其在Scene窗口中居中,如果在拖动物件时,要让镜头跟随物件移动,选中物体后按Shift F即可。

23. 在Scene界面中方便移动编辑镜头

在Scene界面中鼠标右键 A/S/D/W/Q/E来移动镜头, 如果想使Game视窗的镜头跟Scene一样,可以在Unity菜单栏中选择GameObject-->AlignWithView。

24. 在Project界面搜索商店内容

先在Project界面中的搜索栏中输入你想要搜索内容的关键字,然后在搜索栏下边的搜索范围选择中选择AssetStore。

25.区分Unity项目

还在用4.X, 拍案叫绝不敢说, 多开几个Unity实例我不知道各位看官怎么区分开的倒地是哪个?我们用Unity的C#功能识别路径把Unity的路径打到标题栏,这样就方便多了。

26. 脚本编译可以不用mono编译器

而编译的dll和il都可以在mono上跑。从而规避老版本编译器的一些生成问题。

27. shader lab支持自定义对应版本的bytecode

可以用别的shader编译器来编译shader。也是挺灵活的。

28. 横向移动

做一个横向移动模块 里面有个Update函数 传入Transform,就把Transform按固定速度横向移动。

29. 纵向移动

做一个纵向移动模块 里面有个Update函数 传入Transform,就把Transform按重力加速垂直移动。

30. 下次要做一个 斜向固定速度的,就重用横向移动模块

单独写一个纵向固定速度移动的模块。同样的角色脚本,推这两个组件进去,角色就斜着飞了。

31. 把一个模块列表做成状态机状态,加个进入模块和退出模块。

加点状态转换逻辑,你就有个状态机了。

32. 可以把Update函数,拿一个协程的iEnumerator代替

进入状态就启动协程。定时的,不用更新,或者其他特殊的状态都可以轻松搞出来了。

33. 状态里面定义个System.Action之类的事件,模块可以随便抛出这个玩意,这下动画关键帧也有了。

34. 角色

做一个角色的脚本包含一个模块列表,把一个横向和一个纵向模块推入列表,然后角色每次Update就遍历就执行每个模块的Update。

35. 快捷目录

Project窗口下,可以把文件夹直接拖到Favorites下作为快捷入口,再也不用找一个文件翻半天了,常用的目录都可以放在这里。

36. 线框输出

Game窗口的右上角有个Gizmos按钮,点击之后可以把你用于Debug画出来的所有线框都画到游戏场景中,其中包含Gizmos类画出来的所有东西,以及Unity本身提供的碰撞体等等这些需要去Scene窗口看的东西,尤其是没有双屏幕的开发者,这个功能太贴心了。

37. 自定义Profiler

利用Profiler.BeginSample()和Profiler.EndSample()函数,可以将任何代码断加入Profiler输出,性能调优的利器,一般来说如果有某个地方你自己对于性能不是很有把握,检测一下即可知道其使用开销,用了之后就停不下来了。

38. 反射

如果项目中有一些使用到反射的代码不太方便修改,而又希望通过设置Stripping Level来降低包体大小和内存占用,可以在Assets目录下添加link.xml文件来指定涉及到反射的类。

39. 查看prefab的配置

通过将Editor Setting中的Asset Serialization设置为Force Text可以查看prefab的配置内容,并通过比对工具进行差异处理和合并。

,