unity 代码C#封装为dll

作者:编程技术

图片 1

C#引用Unity原生类库

Unity类库在Mac上的路径为Applications/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll
在Windows上的不二等秘书技为
Program FilesUnityEditorDataManagedUnityEngine.dll

连串>加多援引>浏览>根据路线找到UnityEngine.dll,还大概有超多任何的dll

图片 2

image.png

除去多余的援用.
引进dll后,代码就能够用了,使用dll用using UnityEngine;如此这般就足以用这几个dll库下的剧情了例如

using System;
using UnityEngine;//引入dll
namespace MyDll
{
  public class Tip
  {
    public static string GetText()
    {
      return "hello world";
    }
    public static void UnityDllTest()
    {
      Debug.Log(123);
      GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
    }
  }
}

Debug,GameObject等都能够动用了

提示:也能够用MonoDeveloper创制并生成dll,至于操作步骤能够查阅官方网址手册。

图片 3

二、导入DLL

在此一步操作在此之前须求注意在第一步创制项目时暗中认可选项的是.Net Framework4.5.2,作者用的Unity版本是5.4.3,扶持的.NET Framework的本子为3.5,要求修正一下,在VS里项目>MyDll属性 如图

图片 4

改dll属性.png

图片 5

image.png

那样dll的生成才算是大功告成了,假使不开展那步直接放到Unity里当然会报错,如图

图片 6

dll属性未修正的报错

任何时候重新生成一下dll文件,重新导入到Unity的Pugins文件夹下就能够了。

运行后的效用图如下:

4增添类库,引用空间

一、创建DLL

打开VS,文件 > 新建 > 项目

图片 7

新建项目.png

点击鲜明,编辑代码

using System;
namespace MyDll
{
  public class Tip
  {
    public static string GetText()
    {
      return "hello world";
    }
  }
}

生成dll,如图

图片 8

image.png

变动的dll文件的门路在您的工程文件下的binDebugxxx.dll
诸如小编的是在C:UsersadminDocumentsvisual studio 2015ProjectsMyDllMyDllbinDebugMyDll.dll
PS:也能够用MonoDeveloper创立并生成dll,至于操作步骤可以查看官方网站手册。

using UnityEngine;
using System;
using MyLib;

public class TestDll : MonoBehaviour {

    private string blogUrl = "http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles";
    string myBlog;
    double time;

    void Start ()
    {
        myBlog = string.Format("{0}:{1}", MyClass.GetBlogName(), blogUrl);
        Debug.Log(myBlog);

        TimeSpan span = MyClass.GetBlogTime(DateTime.Now);
        time = span.TotalDays;
        Debug.Log("写这篇博客到现在的时间间隔:"   time);
    }

    void OnGUI()
    {
        GUILayout.Label(myBlog);
        GUILayout.Label(time.ToString());

        if(GUILayout.Button("Create Cube"))
        {
            MyClass.CreateCube();
        }
    }
}

 

三、调用DLL

在Unity新建多个TestDll的脚本,并挂到主录制机上,脚本代码如下:

using UnityEngine;
using MyDll;//引入dll
public class TestDll : MonoBehaviour
{
  void Start()
  {
    Debug.Log(Tip.GetText());
  }
}

留意,调用Dll中的方法自然要采用using语句引进导入到unity中的dll类库。using MyDll;

using UnityEngine;
using System;
using MyLib; // 导入dll

public class TestDll : MonoBehaviour {

    private string blogUrl = "http://www.jianshu.com/users/fd3eec0ab0f2/latest_articles";
    void Start ()
    {
        string myBlog = string.Format("{0}:{1}", MyClass.GetBlogName(), blogUrl);
        Debug.Log(myBlog);

        TimeSpan span = MyClass.GetBlogTime(DateTime.Now);
        Debug.Log("写这篇博客到现在的时间间隔:"   span.TotalDays);
    }
}

 

代码编写成功后,重新生成一下dll,然后导入到Unity中,接着纠正Unity脚本TesDll,具体代码如下:

 

一、创建DLL

 

在Unity新建二个TestDll的本子,并挂到主摄像机上,脚本代码如下:

图片 9

本文小编: Sheh伟伟
本文链接: http://davidsheh.github.io/2016/11/15/Unity插件之Unity调用C_Sharp编译的DLL/
版权证明: 本博客全数小说除特别申明外,均接受 CC BY-NC-SA 3.0 许可商榷。转发请声明出处!

3编写制定轻松的代码看看效果(开掘会报错卡塔尔,首假若从未有过增加类库,以致using UnityEngine;援用空间

二、导入DLL

图片 10


图片 11

怎么导入Unity原生类库呢?别急,接下去就说说怎么在自定义的dll类库中调用Unity中的类。
率先入选项目,接着右键选拔增添 -> 援引后,弹出援用项理器,如下图:

 

随着,将项目中没用的类库都移除掉,只保留用到的System和UnityEngine三个类库,如下图:

图片 12

只顾,调用Dll中的方法肯定要利用using语句引进导入到unity中的dll类库。

2并选取类库类型

点击鲜明后,编写如下代码:

有如何好的章程,大神多多留言

源代码放在了群共享中,想要源码的能够加群:253999688

以前你须要采取运营的.framwork版本,须要和unity的接纳版本要求后生可畏律,小编的是在.framwork3.5以下


 


 注意事项:在卷入为dll的C#函数中的方法必得使用静态公共措施

加上引用.png

 

error.png

图片 13

有关dll加密的标题,今后有机会了足以考虑写点东西分享出去。

图片 14

效果图.png

 

进而重新生成一下dll文件,重新导入到Unity就能够了。

图片 15

那是因为本人用的Unity版本是5.3.4f1,帮忙的.NET Framework的本子为3.5。而作者创制的MyLib项指标默许.NET Framework 3.5本子为4.5.2。
筛选项目,然后右键接收属性 -> 应用程序,将对象框架改为 .NET Framework 3.5或以下 ,如下图:

图片 16

引用.png

在代码中调用dll 需求using 命名空间

将MyLib项目目录下的bin/Debug目录下的MyLib.dll文件拷贝到Unity项目标Plugins目录下。这时候,Unity调控台报Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded的荒诞,报错详细音讯如下:

 

using System;

namespace MyLib
{
    public class MyClass
    {
        public static string GetBlogName()
        {
            return "Sheh伟伟的简书";
        }

        public static TimeSpan GetBlogTime(DateTime time)
        {
            return (time - DateTime.Parse("2016/11/14"));
        }
    }
}

1  Visual studio软件张开后创设一个等级次序

在利用途理器分界面点击浏览按键,找到UnityEngine.dll文件点击确认按键导入,如下图所示:

 

风流浪漫经本文有不当之处还请帮衬提出。

 


 

展开VS,接收文件 -> 新建 -> 项目后张开新建项目对话框。接着操作如下:

意识依然会报错,那就必要加上应用库unityengine.dll,方法如下

新建项目.png

 

四、参考资料

5右键施工方案,生成解决方案


 图片 17

接下来,改革MyClass脚本,代码如下:

6.那时你可以在类型中找到dll文件,加入到unity

然后生成dll文件,操作如下图:

那是自家做的链接: 密码:aqvp

Managed Plugins

找到安装unity目录下的UnityEngine.dll,加多后您就会意识,报红的地点没有

援用途理器.png

 

Unity插件分为二种:托管插件(Managed Plugins卡塔尔国和地面插件(Native Plugins卡塔尔。本文先来讲说Unity中的托管插件,当地插件的篇章留到下少年老成篇作品再说。
不经常大家会有如此的须要:给第三方商店提供Unity插件,而又不期望第三方来看实际代码,当时就能够将着力代码编写翻译成dll文件供第三方调用。也许说,同二个商铺八个连串都用到有个别模块,则足以把该模块封装成dll,方便在分化类型里面共用和护卫。


using System;
using UnityEngine;

namespace MyLib
{
    public class MyClass
    {
        public static string GetBlogName()
        {
            return "Sheh伟伟的简书";
        }

        public static TimeSpan GetBlogTime(DateTime time)
        {
            return (time - DateTime.Parse("2016/11/13"));
        }

        public static void CreateCube()
        {
            GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
            int random = UnityEngine.Random.Range(-5, 5);
            go.transform.position = new Vector3(random, random, 0);
        }
    }
}

Unity类库在Mac上的门路为Applications/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll;在Windows上的路线为Program FilesUnityEditorDataManagedUnityEngine.dll

四、导入Unity DLL


build.png

三、调用DLL

本文由分分快三计划发布,转载请注明来源

关键词: 分分快三计划 Unity技巧 Unity基础... 技术笔记