最近试了用Unity引擎开发一款简单的游戏,Unity引擎总体而言还算非常好用的,但某些设置经常忘记,在此记下,以备查询。
以后我主要投入的方向是Unity和C#,传统前后端将不再支持。
关于Unity对Aseprite的支持
Unity支持通过2D Aseprite Importer
对.aseprite
或.ase
文件直接导入,但并不支持导入Tilemap文件 。如果需要导出,则需先在Aseprite中导出Tilemap专用的文件,再导入到Unity中。并且:
- 导入模式选择:Sprite Sheet,否则Sprite Editor无法将组件切割成不同部分;
- 需要调节Pixel Per Unit,该值指的是单位长度能容纳多少像素,因此越低越大。
打开Sprite Editor进行切割。
左上角如下图所示的选单中:
a. Sprite Editor决定怎么导入素材;
b. Custom Outline决定如何识别组件轮廓;
c. Custom Physical Outline决定组件的物理轮廓(如碰撞体)。有时会遇见即使安装此拓展也无法导入的问题,如遇此问题,请升级该插件的版本。
关于Animator与Animation组件的关系
Animation组件已经弃用,不推荐使用Animation管理动画,除非有兼容性相关的考量。
改变相机背景颜色
点击Main Camera->Camera组件->环境->背景类型,如图:
与IDE的向性
Unity目前支持Visual Studio、Visual Studio Code和Rider,其中对于前两者的实现均需要安装Visual Studio Editor(注意,VS Code也是一样,之前专供VS Code的Unity拓展已被弃用),而VS、VS Code方面只需要安装Unity相关拓展或环境即可。
如果VS Code未能识别,则可能需要手动将其导入,并最好点一下Regenerate Project Files
,尤其是项目中没有.sln
文件时。
Unity消息系统
SendMessage()
目前 不推荐使用。一般采用新的,基于接口定义的方法在不同组件中传递消息。
如果希望传递自定义消息,首先需要定义一个继承自IEventSystemHandler
的接口,如下:
1 | public interface ICustomMessageTarget : IEventSystemHandler |
之后,需要在MonoBehaviour
(GameObject)中继承并实现此接口。如下:
不需要新建一个函数,只需要在脚本创建的那个类中加入
ICustomMessageTarget
即可。
1 | public class CustomMessageTarget : MonoBehaviour, ICustomMessageTarget |
调用此接口实现的方法时,需要使用ExecuteEvents.Execute<>()
方法。以下是一个例子:
1 | ExecuteEvents.Execute<ICustomMessageTarget>(target, data, (handler, data) => handler.Message1()); |
其中,ICustomMessageTarget
表示实现了该名称的接口的所有对象,target
指脚本所在的目标对象,data
指接口方法中所需要的数据,而最后一个参数是一个用lambda表达式书写的委托,handler
代表当前的对象,而后面的data
代表输入的数值。