有時(shí)寫(xiě)了點(diǎn)編輯器工具,希望在每個(gè)項(xiàng)目中都用到,但是又不希望每次都把腳本拷貝一下。這時(shí),就可以用到這個(gè)功能,讓腳本成為Unity的“一部分”,任何項(xiàng)目可用。
比如平時(shí)用VsCode作為Unity的編輯器時(shí),經(jīng)常需要用到VsCode這個(gè)插件,下面以Vscode為例,讓Unity打開(kāi)所有項(xiàng)目時(shí),都自帶VsCode插件。
Step1.
在Unity的安裝目錄 Unity5.4.3\Editor\Data\UnityExtensions\Unity (我的版本是5.4.3)下,有一些Unity自帶的模塊,比如 Networking、GUISystem等,所有的模塊根目錄都有一個(gè)ivy.xml文件。如:
<?xml version="1.0" encoding="utf-8"?>
<ivy-module version="2.0">
<info version="5.4.3" organisation="Unity" module="UNetHLAPI" e:packageType="UnityExtension" e:unityVersion="5.4.3f1" xmlns:e="http://ant.apache.org/ivy/extra" />
<publications xmlns:e="http://ant.apache.org/ivy/extra">
<artifact name="UnityEngine.Networking" type="dll" ext="dll" e:guid="870353891bb340e2b2a9c8707e7419ba" />
<artifact name="Editor/UnityEditor.Networking" type="dll" ext="dll" e:guid="5f32cd94baa94578a686d4b9d6b660f7" />
</publications>
</ivy-module>
其中:version、unityVersion均為當(dāng)前Unity的版本號(hào);artifact name 標(biāo)簽為我們的DLL文件的相對(duì)路徑。這兩項(xiàng)是需要我們修改的(在Step3)。
Step2. 生成dll
打開(kāi)Visual Studio 新建一個(gè)Dll類庫(kù)。
文件 - 新建 - 項(xiàng)目 - Visual C# - 類庫(kù)(.NET Framework)

- 這里需要將目標(biāo)框架設(shè)置為framework3.5。(項(xiàng)目屬性 - 應(yīng)用程序 - 目標(biāo)框架 - framework3.5 。),否則可能報(bào)下面的錯(cuò)誤
TypeLoadException: Could not load type 'System.Runtime.Versioning.TargetFrameworkAttribute' from assembly '...
由于我們需要用到Unity的一些Api,所以還需要為Vs項(xiàng)目引用兩個(gè)Dll,UnityEngine.dll和UnityEditor.dll。

這兩個(gè)引用在Unity5.4.3\Editor\Data\Managed\ 目錄下,當(dāng)然,也可以引用其他的dll文件。
將Unity插件VsCode的腳本拷貝到這個(gè)項(xiàng)目中,并生成一下解決方案,可以生成我們需要的dll了。

Step3. 打包模塊使用
從Unity自帶的模塊中拷貝一份 ivy.xml 文件放置好。VSCodeModule文件夾下ivy.xml文件、并且將生成的
VSCodeModule.dll、VSCodeModule.pdb 文件放置到Editor下(如果是非Editor腳本則放在根目錄)。
這里除了要拷貝主要的VSVSCodeModule.dll,如果有引用其他dll庫(kù),也需要一并復(fù)制進(jìn)來(lái)。Unity已有的庫(kù)則不用再拷貝(如UnityEditor.dll...等)。

然后修改ivy.xml文件,如:
<?xml version="1.0" encoding="utf-8"?>
<ivy-module version="2.0">
<info version="5.4.3" organisation="Unity" module="VSCodeModule" e:packageType="UnityExtension" e:unityVersion="5.4.3" xmlns:e="http://ant.apache.org/ivy/extra" />
<publications xmlns:e="http://ant.apache.org/ivy/extra">
<artifact name="Editor/VSCodeModule" type="dll" ext="dll" e:guid="80a3616ca19596e4da0f10f14d241e9f" />
</publications>
</ivy-module>
修改了 version="5.4.3" e:unityVersion="5.4.3" module="VSCodeModule" artifact name="Editor/VSCodeModule" 主要是Unity的版本號(hào),模塊名稱和dll位置。
然后將 VSCodeModule 文件夾復(fù)制到 \Editor\Data\UnityExtensions\Unity\下。新建一個(gè)項(xiàng)目,空空如也,依然可用vscode插件。

參考:http://homans.nhlrebel.com/2014/12/09/unity-4-6-and-modules/
Unity VsCode插件:https://github.com/dotBunny/VSCode
本文示例工程:https://github.com/liangddyy/UnityDemos/tree/master/VSCodeModule