2019-12-09 16:51:10 zhunju0089 阅读数 10
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4631 人正在学习 去看看 张刚

1.打开vs2017新建新项目

2.选择 Windows桌面>动态链接库(DLL)

3.定义一个C++加法函数

4.生成DLL动态链接库

5.在unity中Assets下创建plugins文件夹,将DLL放入其中(必须放到plugins下,否则unity不认)

6.在unity下新建一个Test.cs脚本

using UnityEngine;
using System.Runtime.InteropServices;

public class Test : MonoBehaviour
{
    [DllImport("Dll1")]
    public static extern int add(int a, int b);
    void Start()
    {
        print(add(10, 20));
    }
}

7.将Test.cs脚本拖拽到Main Camera上

8.运行结果

2015-01-28 11:27:16 book_longssl 阅读数 958
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4631 人正在学习 去看看 张刚

 

      做出来的项目是非常容易被反编译的,被反编译后你的所有资源和代码都将会毫无遮掩的呈现出来。由于.net本身没什么加密的措施,所以我们一般都是使用混淆代码的方式来对程序进行一定的加密。接下来2篇博客,简单的讲一下我自己在Unity3D的程序加密做法。首先第一篇,我会简单的说明一下怎样在里面使用dll动态链接库,然后第二篇会说明怎样对dll进行混淆。

开始第一篇的内容:



首先,我们需要新建一个类库项目,可以使用Visual Studio或者Monodevelop来做。我这里是使用vs2012来创建:




选择好项目类型、写好项目名称。

新生成的项目里面默认有一个Class1类



可以通过在解决方案资源管理器里面进行重命名改成自己想要的类名,比如我这里改成了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里面调用就直接可以用了:


运行的结果也是正常的:



当然,不太建议不使用命名空间,这样做一个说明,是因为本身创建的脚本默认没有使用命名空间,只是想说明如果不想麻烦,直接把没有命名空间的脚本直接拿来编译也是可以的。

再次回顾细节,刚才我们使用的是原生的C#,假如我们需要在类库项目写调用本身功能的方法怎样办呢?

在的安装目录EditorDataManaged里面,找到UnityEditor.dll和UnityEngine.dll两个文件。


然后在类库项目里面添加引用,把这两个dll添加进来



这时候,我们就可以在类库项目里面using UnityEngine来使用Unity3D的方法了,比如我们这里简单写了个CreateGameObject方法,生成一个名字为“CreateByDll”的gameobject。



生成dll,放回Unity3D项目里,我们就可以调用这个方法:


运行,看到这个叫做“CreateByDll”的物体生成出来了。


通过以上的说明,我们会发现其实生成自己的dll在Unity3D里面用是很简单的事情。我们还可以添加其他自己写好的类进类库项目,然后生成dll来使用。



最后说一下注意事项了。
刚才生成的dll在Unity3D编辑器里面基本上都是能用的,但不一定能通过编译。有可能在编译成exe或者apk等时会报错。
需要注意的是,类库项目使用的.Net Framework版本。我自己的尝试是,使用.Net 4.0以上版本发布的dll,在Unity3D里面会编译不通过。所以我们可以用2.0或者3.0之类的版本来发布。


还有一些情况是某些现成的dll动态库是使用完整的.Net2.0来发布的,所以我们在编译的时候有可能需要选择完整的.Net 2.0来发布。




到了这一步,我们就可以把的整个代码文件夹里面所有的脚本剪切到类库项目里面生成dll,然后放回Unity3D项目里面。这样别人就不能直接的编辑我们项目里面的代码了。

不过dll本身是不安全的,别人可以很容易看到里面的内容。下一篇博客我们再说明怎样去给dll做混淆。


2014-11-11 17:34:43 hhkun0120 阅读数 2871
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4631 人正在学习 去看看 张刚
unity 3d 导入dll时候报错:
Internal compiler error. See the console log for more information. output was:
Unhandled Exception: System.TypeLoadException: Could not load type 'System.Runtime.InteropServices.GuidAttribute' from assembly 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
  at (wrapper managed-to-native) System.Reflection.Assembly:InternalGetType (System.Reflection.Module,string,bool,bool)
  at System.Reflection.Assembly.GetType (System.String name, Boolean throwOnError, Boolean ignoreCase) [0x00000] in <filename unknown>:0 
  at System.Reflection.Assembly.GetType (System.String name) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.RootNamespace.GetTypeInAssembly (System.Reflection.Assembly assembly, System.String name) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.RootNamespace.LookupTypeReflection (Mono.CSharp.CompilerContext ctx, System.String name, Location loc, Boolean must_be_unique) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.GlobalRootNamespace.LookupTypeReflection (Mono.CSharp.CompilerContext ctx, System.String name, Location loc, Boolean must_be_unique) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Namespace.LookupType (Mono.CSharp.CompilerContext ctx, System.String name, Location loc) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Namespace.Lookup (Mono.CSharp.CompilerContext ctx, System.String name, Location loc) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.TypeManager.CoreLookupType (Mono.CSharp.CompilerContext ctx, System.String ns_name, System.String name, Kind type_kind, Boolean required) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.PredefinedAttribute.Resolve (Boolean canFail) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.PredefinedAttributes.Initialize () [0x00000] in <filename unknown>:0 
  at Mono.CSharp.TypeManager.InitOptionalCoreTypes (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0 
  at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 
解决办法是:这个dll不能用 去我的资源里下载新的dll替换即可。下载地址为:http://download.csdn.net/detail/hhkun0120/8146009
这个dll是原始的dll


2015-09-06 19:07:36 suifcd 阅读数 4192
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4631 人正在学习 去看看 张刚

unity中有些时候有些代码是一整套的,如果能把他们归类起来作为一个文件整个代码结构看起来就会整洁清爽很多。

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官方提供了相应的教程。

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有,所以只是不建议,而不是不能。大家根据自己的情况调整就行。

文章原创,转载请注明出处

2012-09-05 23:04:41 tanmengwen 阅读数 2907
  • Unity3D入门到精通-(3)Unity资源管理精讲

    本次系列课程的目标是让Unity3D初学者掌握Unity3d的资源管理技术进行了全面介绍,特别对AssetBundle资源如何进行更新,以及加载(依赖资源加载)进行了系统的介绍。 适合对象:Unity初学开发者,Unity中级开发者,网络程序开发者,所有对游戏开发有兴趣的人员。 学习条件:有一定的Unity3D基础,了解C#的基本开发知识。

    4631 人正在学习 去看看 张刚

Unity3D GUI Tools
http://danim.tv/blog/archives/unity3d-gui-tools

Unity3D Level Editor
http://danim.tv/blog/archives/unity3d-level-editor

Unity3D Input Tools
http://danim.tv/blog/archives/unity3d-input-tools


iTween
http://www.pixelplacement.com/iTween/

iTween Visual path editor
http://pixelplacement.com/2010/12/03/visual-editor-for-itween-motion-paths/

iTween Visual Editor
http://dkoontz.wordpress.com/2010/10/27/itween-visual-editor/

Playmaker – visual scripting tool
http://hutonggames.com/playmaker.html
http://forum.unity3d.com/threads/72349

Antares Project
http://forum.unity3d.com/viewtopic.php?t=50843

uScript Visual Scripting Tool
http://forum.unity3d.com/threads/84594

Brain Builder
http://boldai.com

Unity 3 Node Based Shader Editor
http://forum.unity3d.com/viewtopic.php?t=60174

Shortcuts Editor
http://forum.unity3d.com/viewtopic.php?t=64494

Edit multiple gameobjects
http://forum.unity3d.com/threads/68102

Game Translator – by the Google Translate API
http://forum.unity3d.com/threads/81538

Translation Editor
http://forum.unity3d.com/threads/85129

Font Texture Builder + Unity Importer
http://rouheegames.com/FTB/

RapidUnity Light Library
http://www.alabsoft.com/lightlib.shtml
http://forum.unity3d.com/threads/56255

RapidUnity Array Wizard
http://www.alabsoft.com/arraywiz.shtml
http://forum.unity3d.com/threads/59935

Array based Object Placement Tool (Editor Extension)
http://forum.unity3d.com/threads/84902

TransformUtilities
http://www.blog.silentkraken.com/2010/02/06/transformutilities/

FMODUnity .NET Plugin
http://www.squaretangle.com/FMODUnity.html
http://forum.unity3d.com/threads/28548

UniLOD – Level-of-detail and streaming support
http://forum.unity3d.com/viewtopic.php?t=45295

FaceFX – Facial animation integration
http://forum.unity3d.com/threads/63573
http://www.facefx.com/page/unity-demo

UnitySteer
http://www.arges-systems.com/articles/48/unitysteer-20-released

Convert Unity Javascript (unityscript) to C#
http://www.m2h.nl/files/js_to_c.php

Convert C# to Boo
http://codeconverter.sharpdevelop.net/SnippetConverter.aspx

LibNoise ported to Unity (Perlin, RiggedMultifractal, Voronoi, Billow Noises)
http://forum.unity3d.com/threads/68764

Griddy – Unity Grid Toolkit
http://forum.unity3d.com/threads/50108

ORK Okashi RPG Kit
http://rpg-kit.com
http://forum.unity3d.com/threads/66367

RPG-Starter-Package
http://forum.unity3d.com/threads/79714

FPS Constructor – Weapons
http://www.dastardlybanana.com/FPSConstructorWeapons.htm
http://forum.unity3d.com/viewtopic.php?t=47742

FPS DEV KIT
http://www.3dattack.us/3DAttack/FPS_DEV_KIT.html
http://forum.unity3d.com/viewtopic.php?t=53136

Unity Shooter Engine
http://the3daction.com
http://forum.unity3d.com/viewtopic.php?t=57890

Weapon Control
http://forum.unity3d.com/viewtopic.php?t=60429

Finite State Machine Project (simple waypoint AI)
http://forum.unity3d.com/viewtopic.php?t=56264

Game and -AI development (Behave and Pathfinder)
http://angryant.com

A* Pathfinding
http://arongranberg.com/unity/a-pathfinding/

Nimbus – Cloud System
http://happyface3d.com

RageSpline – Create smooth 2D graphics inside Unity Editor
http://forum.unity3d.com/threads/86772

Mega-fiers modifiers – 3D Mesh Modifier System
http://west-racing.com/mega-fiers/

Game Draw 3D modeling
http://gamedraw3d.com

SmartFoxServer: massive multiplayer server for MMO
http://www.smartfoxserver.com

Exit Games – Game Network Engines, MMO Server
http://www.exitgames.com

ElectroServer5 – For client-server games Flash, Unity3D, iPhone/iPad, and Android
http://www.electrotank.com

Jibe Software Kit – MMO capable complete software kit
http://outpost.reactiongrid.com/Products/165-jibe-software-kit.aspx

Irc Chat
http://forum.unity3d.com/threads/68070

Vehicle Editor Resource Pack
http://www.alabsoft.com/rapidunity.shtml

EasyRoads3D – Road Systems for Unity
http://unityterraintools.com
http://forum.unity3d.com/viewtopic.php?t=23519

Road/Path Tool – River Tool – Terrain Toolkit
http://www.sixtimesnothing.com/tools-and-resources/

Road Network Generator
http://forum.unity3d.com/threads/83961
http://dl.dropbox.com/u/18986451/GrantSimpleSoftware/roadNetworkGenerator.html

Terrain 4 Mobile System
http://www.store.azert2k.fr/?page_id=244

Unity3D Obfuscator – a special protection tool
http://en.unity3d.netobf.com
http://forum.unity3d.com/threads/51356

Stitchscape – ObjReader – UniFileBrowser – Fractscape
http://www.starscenesoftware.com/Utilities.html

Vectrosity (Line, Circle, Ellipse, Grid & Selection)
http://starscenesoftware.com/vectrosity.html
http://forum.unity3d.com/viewtopic.php?t=53268

Unity Localization Framework (ULF) for Language localization
http://www.bitwisedesign.com/unity/localization
http://forum.unity3d.com/threads/53481

Quest It?! – Quest/Dialog/Inventory Editor
http://blog.windmillgames.com/?page_id=83
http://forum.unity3d.com/viewtopic.php?t=60469

Unity Conversation Maker
http://lemuria.org/projects/wiki/UnityConversationMaker

Unity Cutscene Editor
http://matthewminer.com/2010/unity-cutscene-editor-initial-release/

Aperture Cutscene Editor
http://forum.unity3d.com/threads/106442

Unity Dialogue Editor
http://ninjaportal.com/NinjaPortal/UDE.html
http://x9productions.com/blog/?page_id=94

Conversation Engine
http://forum.unity3d.com/viewtopic.php?t=60897

MondoCloud – Real-time messaging service for online games
http://www.mondocloud.com

Store
http://forum.unity3d.com/viewtopic.php?t=47361

Adventure Game Inventory System
http://basenjigames.com
http://www.theantranch.com/Unity/Entries/2010/5/17_Basic_Inventory_%26_Looting_System.html
http://forum.unity3d.com/viewtopic.php?t=52460
http://forum.unity3d.com/viewtopic.php?t=55270
http://forum.unity3d.com/viewtopic.php?t=51475
http://forum.unity3d.com/viewtopic.php?t=51407
http://forum.unity3d.com/viewtopic.php?t=60745

Advanced Inventory System and Equipment
http://forum.unity3d.com/viewtopic.php?t=57849

Urban PAD – City Generator
http://www.gamr7.com

Mixamo – Animation Driven Playable Character
http://www.mixamo.com

faceAPI
http://www.andysaia.com/radicalpropositions/?p=197

Text to Speech [Dll] for Win32
http://forum.unity3d.com/viewtopic.php?t=60020

M2HCulling: Optimize your game – culling system for Unity
http://forum.unity3d.com/viewtopic.php?t=55686

UnityDevs Tools (Cubemaps Generator – Automatic progress bars load)
http://unitydevs.com

ex2D (2D sprite/UI solution)
http://www.ex-dev.com/ex2d/index.html
http://forum.unity3d.com/threads/98870

3D Anaglyph System
http://www.store.azert2k.fr

Stereoskopix3D
http://forum.unity3d.com/threads/63874-stereo-3D-in-Unity-3D?p=416458#post416458

Browsing the web within Unity Editor
http://forum.unity3d.com/threads/67149

Berkelium plugin: rendering interactive websites
http://github.com/jdierckx/UnityBerkeliumPlugin
http://forum.unity3d.com/viewtopic.php?t=57298

HtmlTexturePlugin
http://www.unifycommunity.com/wiki/index.php?title=HtmlTexturePlugin

UnityAr ArToolkit Webcam
http://produktion.weltenbauer.com/#/5
http://forum.unity3d.com/viewtopic.php?t=32669

Unity Automatic PDF Gereration with Sharp PDF
http://www.francescogallorini.com/2011/02/unity-sharp-pdf
http://forum.unity3d.com/threads/78108-Runtime-PDF-Gereration

Unity 3 Tree Creation and Editing Video
http://hometime.net/tree edit/tree edit.html
http://forum.unity3d.com/viewtopic.php?t=60094

Runtime obj importer
http://forum.unity3d.com/viewtopic.php?t=45990

M2HPatcher – Patch/update your games
http://forum.unity3d.com/threads/62326-M2HPatcher

Unity 3D Save Tool
http://bladestudios.x10hosting.com/u3dst.html

ColdScene – SceneXML
http://forum.unity3d.com/threads/68080

C# Google Analytics Helper
http://www.persistentrealities.com/code/
http://forum.unity3d.com/viewtopic.php?t=60411

Unity 3 iPhone Plugins
http://www.prime31.com/unity/

Unity3dx
http://www.unity3dx.com

UniTool – Advanced Unity embedding and Flash Interfacing
http://code.google.com/p/unitool
http://forum.unity3d.com/threads/70550

Unity WordPress Blog Plugin

http://unity3d.com/support/resources/assets/unity-wordpress-blog-plugin

Unity WordPress Plugin with Duplicates Fix
http://forum.unity3d.com/threads/38181
http://pennymo.com/2009/09/04/putting-unity-3d-into-wordpress-a-nice-solution

Related posts:

  1. Unity3D Input Tools
  2. Unity3D Monetization Tools
  3. Unity3D GUI Tools
  4. Unity3D Source Code Example
  5. Unity3D Experimental & FX Exemple
  6. Unity3D Scripts
  7. Unity3D Shaders
http://danim.tv/blog/archives/unity3d-tools/
没有更多推荐了,返回首页