unity3d将C#打包成dll方法
方法一:用vs新建工程-C#库,添加UnityEngine.dll引用,注意.netframwork选3.5,编译C#脚本得到dll;
方法二:使用mono的mcs,具体如下
c#提供了dll打包,但是unity中由于涉及到unity的自身dll,如UnityEngine.dll,我们一般写的很多代码都会涉及到对这个dll的引用,在unity中建代码文件都会默认添加对此dll命名空间的使用,using UnityEngine;
因此在涉及到使用此dll在打包dll的时候就要有点特殊处理。
项目中常见的是对Debug的二次封装,由于调试的需求,在项目开发周期debug是个很重要且常用的类,但是debug的效率实在是不忍直视,所以在打包apk时出于效率考虑就要屏蔽掉debug的调试,这时要做的可能是删除掉所有对应的代码,这基本上是不可能的,不说这些调试代码可能以后会用到,每次打包都删一次也不实际。还有一种是设定bool值,每次调用Debug类的时候,判定此bool值,每次都要判定,这本书就代码冗余,设计的不合理。这里大家想到的可能都是二次封装了。在封装一个类,调用Debug的时候调用封装的类,但是这又设计到一个问题,Debug调试的一个重要功能就是显示在控制台的信息双击可以跳到指定代码,如果这样二次封装的话就每次跳到封装的代码里,而不是我们想要的地方。有人说可以看堆栈调用信息,可是每次都看,很累的。对于这个问题,便是将二次封装类进行dll打包。
啰嗦了一大堆,只是说明为什么要对Debug进行二次封装和为什么要用dll的原因,具体方法如下,unity官方提供了相应的教程。
文档是英文的,但是不难,分别讲解了在Windows条件下和mac条件下的操作方法。
这里以Windows为例,大概讲解一下。
流程:
1.先进入unity的安装目录,找到你引用的dll,地址类似于C:\Program Files\Unity\Editor\Data\Managed
如你引用了UnityEngine.dll,那么久复制对应的文件。
2.将复制的文件拷贝到硬盘根目录,根目录的缘故是为了接下来方便操作,也可以在根目录下创建一个文件夹,将文件放入这个文件夹。这里示例为F盘根目录 。注意:不建议放在桌面
3.将你要打包dll的文件复制到同个地方(示例为F盘根目录)
4.开cmd界面,进入执行文件的目录,路径大概如下
C:\Program Files (x86)\Unity4.6\Editor\Data\MonoBleedingEdge\lib\mono\2.0
根据自己的安装目录进行参考
5.执行命令,命令大概如下
mcs -r:F:\UnityEngine.dll -target:library F:\DebugCustom.cs
其中mcs是命令是要执行的命令,F:\UnityEngine.dll是引用的dll,如果你引用了多个dll,可以加个空格后继续添加,-target:library是指将文件打包成dll,F:\DebugCustom.cs是你要打包成dll的文件,如果文件有多个,同样加空格然后在后面添加
上面就是流程了,看完了后不知道有没有看出问什么会有上面那个注意了,第五条中空格很关键,而我们桌面的路径有的会有空格,win7的没有,好像是Xp有,所以只是不建议,而不是不能。大家根据自己的情况调整就行。
引申:混淆器可以用来安全保护编译后的dll,具体原理是去除代码中所有的symbol信息。
unity3d将C#打包成dll方法的更多相关文章
- C、C++打包成.dll .so .a 给Unity使用
C.C++打包成.dll .so .a 给Unity使用 打包.dll库 工具:VS 使用VS新建项目 选择不大于.NET3.5的版本 选择Visual C++ -> Win32 控制台应用程序 ...
- 【Python打包成exe方法】——已解决导入第三方包无法打包的问题
前言 在我们写代码的过程中,我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我们将我们的xx.py文件发给他,他是不能直接用的,他还需要安装python解释器,甚至还要安 ...
- 将halcon导出的c++程序打包成dll库
1.从“文件”菜单中,选择“新建”,然后选择“项目…”. 2.从“项目类型”窗格中选择“Visual C++”下的“Win32”. 3.从“模板”窗格中,选择“Win32 控制台应用程序”. 4.为 ...
- JAVA的class打包成dll
一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录下的所有class文件夹全部进行打包处理: 使用的命令:jar cvf test.jar -C com/ . //注意这 ...
- python3打包成exe---pyinstaller方法
前言: 主要介绍python3的pyinstaller打包方法 pyinstaller安装参考地址:http://www.pyinstaller.org/ pywin32的下载地址:https://s ...
- asp.net core2.0中网站发布的时候,视图文件不被打包成dll
项目csproj文件里面加 <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <Target ...
- Unity中资源打包成Assetsbundle的资料整理
最近在研究Unity中关于资源打包的东西,网上看了一堆资料,这里做个整合,说整合,其实也就是Ctrl-C + Ctrl-V,不是原创 首先为了尊重原创,先贴出原创者的文章地址: http://blog ...
- Pycharm+Python3+python工程打包成exe+在windows下自动定时运行
python3打包成exe---pyinstaller方法:https://www.cnblogs.com/mufenglin/p/7479281.html 按照如上方式打包后,执行dist文件夹(新 ...
- 【hadoop】 eclipse中的“run on hadoop”和打包成jar提交任务的区别
eclipse中的 调试运行 及 “run on hadoop”默认只是运行在单机上的,因为要想在集群中让程序分布式运行还要经历上传类文件.分发到各个节点等过程, 一个简单的“run on hadoo ...
随机推荐
- UNIX设备文件
UNIX和Linux中比较重要的三个设备文件是:/dev/console,/dev/tty和/dev/null. 0 /dev/console 这个设备代表的是系统控制台,错误信息和诊断信息通常会被发 ...
- Mat类型at问题-opencv-bug调试
前言 调试程序的过程中,opencv创建矩阵之后对其赋值出现错误: Mat m = Mat::zeros(1, featureLen, CV_32FC1); Mat data = Mat::zeros ...
- git中的needs merge问题
这个问题是在先“储藏”起来了,后面再调用出来出现的错误. 解决的方法就是通过git add ,git commit -m 提交上去就可以了.
- Linux系统部署应用ECShop
- (1)变量、常量、程序交互、数据类型、bool、基本运算符
什么是变量 变量由变量名和变量值组成 name = 'Alex Li' 这个算式就是将一个值赋予给变量,也就是声明变量的意思 name 就是一个变量,也是一个变量的名字 'Alex Li' 就是一个 ...
- python 2个dict如何合并
dictMerged2 = dict( dict1, **dict2 ) 这种效率比较高 refer to: http://www.pythoner.com/13.html
- WPF 中对启动参数的处理
/// <summary> /// Interaction logic for App.xaml /// </summary> public partial ...
- 进程间通信--POSIX信号量
1.未决和阻塞标志可以用相同的数据类型sigset_t来存储,sigset_t称为信号集,这个类型可以表示每个信号的“有效”或“无效”状态,在阻塞信号集中“有效”和“无效”的含义是该信号是否被阻塞,而 ...
- day28 python学习反射 sinstance和issubclass
isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 判断这个对象是不是这个类,或者是不是这个类的子类的实例化 class Foo( ...
- prisma 服务器端订阅试用
graphql 协议是支持数据的实时订阅功能的(一般基于websocket 进行实现) prisma 支持客户端订阅以及服务器端订阅(类似webhook),可以方便将 数据推送后端服务 目的 pr ...