前言

这里是前言介绍。

正文

在开发Unity的package并且推送到Package Manager时,有时需要判断项目工程中有没有包含某个package。一种可行的解决办法是在当前package的Assembly definition(asmdef)文件的“Version Defines”中的Resource中添加想要判断的package,然后设定一个对应的Define,详细可见https://docs.unity3d.com/2022.2/Documentation/Manual/class-AssemblyDefinitionImporter.html。假设我们添加的“Define”叫“PACKAGE_1”添加后,我们在代码中就可以这样写:

1
#if PACKAGE_1    // 如果包含package1#else    // 如果不包含package1#endif

但是,此时又会出现另一个问题:如果我们想判断当前项目包不包含自己的package怎么办?在“Version Defines”中我们只能添加当前项目中包含的package,而我们的项目中是不可能包含我们在开发的package的。解决办法也很简单——直接编辑asmdef文件,在他的versionDefines中加入如下代码,替换对应的namedefine使其对应你的package即可,如有需要也可以添加expression

1
"versionDefines": [    {                    "name": "com.mycompany.mypackagename",        "expression": "",        "define": "MY_PACKAGE"    }    ],

之后,就可以像上面一样用#if MY_PACKAGE判断当前项目有没有包含你自己的package了。


to be continued…