Unity中使用和调试Dll

原文地址:http://jacksondunstan.com/articles/3052?utm_source=tuicool

正文:

本文意在指导你在Unity中创建、使用和调试一个.NET dll。你可以模块化你的代码,把它们组织成库,这样开发者只要导入一个单独的文件就可以使用你的库。从代码设计的角度上讲,这在组织你的纯代码时尤其有用,比如你可以把mono形式的结构拆成可复用的组件。

首先,我们来谈谈啥是.NET dll?简单的讲,它是一个包含了一个或多个编译好的.NET脚本的文件。一般是C#,也可能是其他.NET语言,比如F#或者IronPython。实际上,当你把脚本直接添加到Unity项目里时,它会自动编译到一个Dll里,保存在MyProject/Library/ScriptAssemblies/Assembly-CSharp.dll。

如何创建你自己的dll呢?Unity并没有提供构建自定义dll的方法,所以你需要使用其他工具,比如MonoDevelop,Xamarin Studio或者Microsoft Visual Studio。我们将会讨论以上每一种工具该怎么做,因为它们在开发中都很常见。

MonoDevelop(Unity 5.0.2f1自带)

  1. File > New > Solution
  2. C# > Library
  3. 选择一个项目名和路径 > OK
  4. Project > ProjectName Options
  5. Build > General > Target framework > Mono / .NET 2.0
  6. Project > Edit References > .NET Assembly
  7. 导航到 /Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll
  8. OK
  9. 把你的代码添加到项目
  10. Build > Build All
  11. Dll放在项目目录/bin//Debug/ProjectName.dll

Xamarin Studio (5.9.1 build 3)(没用过,不敢乱翻译)

  1. File > New > Solution
  2. Other > .NET > Library > Next
  3. Choose a project name and directory > Create
  4. Project > ProjectName Options
  5. Build > General > Target framework > Mono / .NET 2.0
  6. Project > Edit References > .NET Assembly > Browse…
  7. Navigate to /Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll
  8. Open > OK
  9. Add your code to the project
  10. Build > Build All
  11. The DLL is placed in ProjectDirectory/bin/Debug/ProjectName.dll

Microsoft Visual Studio (2013, version 12.0.31101.00 Update 4)

  1. 文件 > 新建 > 项目
  2. 最上面的下拉框 > .NET Framework 2.0
  3. 模板> Visual C# > 类库
  4. 输入项目名和路径 > 确定
  5. 项目>添加引用 > 浏览 > 浏览按钮
  6. 选择C:\Program Files\Unity\Editor\Data\Managed\UnityEngine.dll
  7. 添加 > 确定
  8. 把你自己的代码写到项目里
  9. 生成 > 生成解决方案

现在你会获得一个dll文件,路径为项目目录/bin/Debug/项目名.dll,把这个文件拷贝到你的Unity项目的Assets目录下,或者Assets下的任何目录中,你的Unity项目就可以使用你的类库了。

这么做会有一个问题,当你的dll里的代码出了错,调用堆栈里的信息很少,没有你把源码放到项目里那样多。尤其是这样做没有文件名和行号,这样调试起来会变得很困难。

幸运的是,这个问题有解决方案。如果你使用MonoDevelop和Xamarin Studio,生成dll的时候还会在同目录下生成一个dll.mdb文件。把这个文件拷贝到Unity项目里,和你的dll文件同目录,Unity就可以拿到你的dll的调试信息,包括文件名和行号。

如果你用Microsoft Visual Studio创建dll,那么你得做额外的一步。Visual Studio会创建一个pdb文件来代替mdb文件,但是Unity不知道怎么用pdb文件。因此Unity提供了一个命令行工具,把pdb文件转换成mdb文件。运行方法如下:

[text]  view plain  copy
  1. c:\Program Files\Unity\Data\MonoBleedingEdge\lib\mono\4.5\pdb2mdb.exe MyLib.dll  

(译注:其实我试了试把pdb文件和dll文件一起拷贝到Unity项目里,Unity会自动生成mdb文件,不需要手动执行命令行工具,我的Unity版本是4.6.4f1)

最后,在Unity中使用dll也有一些缺点,首先你的dll如果派发了事件,会发生一些问题,我们在这篇文章中有讨论。

另一个问题是,当dll中的代码出错了,你想简单的在Unity的控制台面板里双击错误信息,跳到指定的位置,这是不行的。你得记下来出错的那一行,打开你构建dll的IDE,找到这一行,修复错误,重新生成dll,重新导入dll到Unity里,这个过程太繁琐了……当然你也可以通过IDE的自动化操作来完成这个步骤。

现在你知道在Unity里如何创建、使用和调试.NET dll了吗?(后面的话大概都是客套话,大意是如果你准备用dll的话,可以在评论里和他分享)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值