如果稍微关注过这方面知识的朋友,应该知道 Unity3D 做出来的项目是非常容易被反编译的,被反编译后你的所有资源和代码都将会毫无遮掩的呈现出来。由于.net 本身没什么加密的措施,所以我们一般都是使用混淆代码的方式来对程序进行一定的加密。 接下来 2 篇博客,阿赵将会简单的讲一下我自己在 Unity3D 的程序加密做法。首先第一篇,我会简单的说明一下怎样在 Unity3D 里面使用 dll 动态链接库,然后第二篇会说明怎样对 dll 进行混淆。 开 始 第 一篇的内容: 首先,我们需要新建一个类库项目,可以使用 Visual Studio或者 Monodevelop 来做。我这里是使用 vs2012 来创建: 选择好项目类型、写好项目名称。 新生成的项目里面默认有一个 Clas s 1 类 可以通过在解决方案资源管理器里面进行重命名改成自己想要的类名,比如我这里改成了Math3D 然后写一个简单的静态方法在里面。这里我写了个最简单的加法(Add)。也可以不写静态方法,写出普通的 public 方法,用的时候 new 对象出来调用该方法也可以。这和正常的 C#编程没区别。 写好之后,在资源管理器里面选择“生成”,那么在项目的 bin/debug 里面就会看到 dll文件,比如我这个额项目就是 AzhaoDll.dll 接下来在 Unity3D 里面创建你需要的项目,把刚才的 dll 文件随便放到项目的 Assets 文件夹里面。关于这个 dll 文件的存放位置,网上有些人说是必须放在插件文件夹里面,其实是不需要的,放在任意位置它都能被识别出来。当然,按照良好的项目路径习惯,我们建立一个专门放插件的文件夹来存放 dll 文件,也是合理的。 然后在 Unity3D 里面创建一个 C#脚本,写一行简单的代码来调用我们刚才写的Math3D.Add 方法。 这时会发现 Math3D 类不能识别,我们 using AzhaoDll命名空间 然后在 Unity3D 里把脚本挂到摄像机上,运行,可以看到打印出正确的结果了,这就证明了 dll 已经被成功调用了。 回顾刚才我们做的一些小细节,在类库项目的 Math3D 类里面。我们默认的使用了 AzhaoDll命名空间。那么假如我们不使用命名空间,或者使用其他的命名空间行不行?答案是可以的,命名空间可以任意的更改,如果不用命名空间,那么在调用的时候就不需要 using,如果使用了其他命名空间,对应的 using 其命名空间就行了。 以下试试把命名空间删掉: 那么在 Unity3D 里面调用就直接可以用了: 运行的结果也是正常的: 当然,不...