可能需要提供不含源的Unity代码的应用程序包

可能需要提供不含源的Unity代码的应用程序包

通常,当源发生更改时,Unity 会将项目中的脚本保存并编译为源文件。 然而,它也可以使用外部编译器将脚本编译成动态链接库(DLL)。 然后可以将生成的 DLL 添加到项目中,并且它的类可以像普通脚本一样附加到对象。

在Unity中使用脚本通常比使用DLL更简单、更方便,但您可能需要访问第三方提供的DLL格式的Mono代码。 在开发自己的代码时,可以将代码编译成DLL并将其添加到Unity项目中以使用Unity不支持的编译器(例如F#)。 或者,您可能需要提供没有源的 Unity 代码(例如 Asset Store 产品),而 DLL 可以让您轻松完成此操作。

创建DLL

要创建 DLL,首先需要一个合适的编译器。 并非所有生成 .NET 代码的编译器都与 Unity 兼容,因此在进行任何认真的工作之前,最好使用一些工作代码来测试编译器。 如果 DLL 不包含依赖于 Unity API 的代码,只需使用适当的编译器选项将代码编译到 DLL 中即可。 如果要使用Unity API,需要设置Unity自带的DLL与编译器兼容。 在 Mac 上,此代码包含在应用程序包中(您可以使用上下文菜单中的“显示包内容”命令查看应用程序包的内部结构;右键单击或 ctrl+单击此 Unity 应用程序):

Unity DLL 的路径通常是

	/Applications/Unity/Unity.app/Contents/Frameworks/Managed/

... UnityEngine.dll 和 UnityEditor.dll 将调用这两个 DLL。

在 Windows 上,您可以在 Unity 应用程序安装文件夹中找到该 DLL。其路径通常为

	C:\Program Files\Unity\Editor\Data\Managed

...尽管 DLL 名称与 Mac OS 上的相同,

但是,用于编译 DLL 的确切选项会有所不同,具体取决于所使用的编译器。 例如,在 Mac OS 上,Mono C# 编译器的命令行 mcs 可能如下所示:-

	mcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll -target:library ClassesForDLL.cs 

此处,-r 选项指定要包含在构建中的库的路径,在本例中为 UnityEngine 库。 -target 选项指定所需的版本类型; “库”一词用于选择 DLL 版本。 最后,要编译的源文件被命名为ClassesForDLL.cs(这假设该文件位于当前工作文件夹中,但如果需要,可以使用完整路径来指定该文件)。 如果一切顺利,生成的 DLL 文件很快就会出现在与源文件相同的文件夹中。

使用动态链接库

编译后unity 保存文件对话框,只需将 DLL 文件拖放到您的 Unity 项目中游戏动态,就像任何其他资源一样。 DLL 资源包含一个小三角形符号,可用于区分库中的各个类。 从 MonoBehaviour 派生的类也可以像普通脚本一样拖放到游戏对象中。 非 MonoBehaviour 类可以像往常一样直接在其他脚本中使用。

unity如何保存项目_unity保存文件_unity 保存文件对话框

具有可视类的扩展 DLL

MonoDevelop 和 Visual Studio 分步指南

在本节中3D场景,您将了解如何使用 MonoDevelop 和 Visual Studio(用于构建 .NET 库的两种最流行的集成开发环境 (IDE))构建和集成一个简单的 DLL 示例,以及如何为 DLL 准备调试会话。

编写和构建 DLL 打开 MonoDevelop 或 Visual Studio。 在“应用程序”菜单上创建一个新项目: 填充新的库信息: 添加对 Unity API 的引用: 选择所需的 Unity API 文件: Windows:在此示例中,解决方案浏览器将类重命名为“MyUtilities”并替换其代码与:C#

using System;	
using UnityEngine;
namespace DLLTest {
	public class MyUtilities {
		public int c;
		public void AddValues(int a, int b) {
			c = a + b;	
		}
		public static int GenerateRandom(int min, int max) {
			System.Random rand = new System.Random();
			return rand.Next(min, max);
		}
	}
 }

最后,构建项目以生成 DLL 文件及其调试符号。 在 Unity 中使用新创建的 DLL。 打开Unity并创建一个新项目.will构建文件

将 /bin/Debug/DLLTest.dll 复制到 Assets 或子文件夹(例如 Plugins)。 在本示例中unity 保存文件对话框,在 Assets 中创建一个 C# 脚本并将其命名为“Test”,并将内容替换为以下代码:C#

using UnityEngine;
using System.Collections;
using DLLTest;
void Start () {
	MyUtilities utils = new MyUtilities();
	utils.AddValues(2, 3);
	print("2 + 3 = " + utils.c);
 }
void Update () {
	print(MyUtilities.GenerateRandom(0, 100));
 }

最后,将脚本分配给场景中的一个对象(例如主摄像机)并运行场景。 您将在控制台窗口中看到输出。为 DLL 设置调试会话为 DLL 准备调试符号:Visual Studio:在命令提示符中执行

\Unity\Editor\Data\Mono\lib\mono\2.0\pdb2mdb.exe,更改

\bin\Debug\DLLTest.pdb 作为转换文件的参数传递

\bin\Debug\DLLTest.dll.mdb 复制到Assets(例如Assets\Plugins\) 在MonoDevelop中打开“Test”脚本,一定要在Tools菜单(Windows)或MonoDevelop-Unity菜单(MacOS)中启用Unity调试器:

有关详细信息,请参阅调试器页面。

文章来源:http://blog.csdn.net/chaixinke/article/details/40436495