让Unity更强大之扩展DLL的创建及使用

让Unity更强大之扩展DLL的创建及使用


创建DLL文件:VC工程创建

  1. 以VS2008中创建为例,首先在VS中新建一个VC的项目,在新建项目的对话框的模板中,选择“Win32控制台应用程序”,如下图:
    第1步图片
    随后点击[确定]按钮,进入下一界面。

  2. 在此界面可以确认你的设置是否正确,如下图:
    这里写图片描述
    确认无误后,继续点击[下一步]按钮,进入下一界面。

  3. 进行应用程序设置,应用程序类型选择“DLL”,附加选项选择“空项目”,如下图:
    第3步图片
    点击[完成]按钮,项目创建完毕。

创建DLL文件:编写代码

  1. 在解决方案资源管理器中,右键点击头文件件,新建及编写TestUnityDLL.h文件
    新建TestUnityDLL.h文件
    这里写图片描述TestUnityDLL.h 代码内容如下:
#ifdef _DLLExport_EXPORT
#define _DLLExport __declspec(dllexport)
#else
#define _DLLExport __declspec(dllimport)
#endif

extern "C" {
    _DLLExport int TestAdd(int x, int y);
}

2.按上一步骤操作,在解决方案的源文件中新建及编写TestUnityDLL.app文件,代码内容如下:

#define _DLLExport_EXPORT
#include "TestUnityDLL.h"

extern "C" {
    int TestAdd(int x, int y )
    {
        return x + y;
    }
}

最后整个解决方案目录就是这样子的:
解决方案目录总览

创建DLL文件:编译DLL

编译时确认一下“项目–属性–配置属性–常规–配置类型”中的设置,是否设置为“动态库(.dll)”。

在Unity中使用DLL文件:导入DLL

打开Unity,并在Unity的Assets目录中,新建一个名为“Plugins”的文件夹,并将编译好的dll文件放到其中,在Inspector菜单中设置这个dll对应的适用平台以及x86或x86_64选项,之后点击[Apply]按钮应用设置,如下图:
这里写图片描述

编写下面的测试代码,并添加到场景物体中,如Main Camera。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices; 
using System.IO;

public class TestDll : MonoBehaviour {

    [DllImport("TestUnityDLL", EntryPoint="TestAdd")]
    private static extern int TestAdd(int x, int y);

    int i = TestAdd(12, 23);

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }

    void OnGUI(){
        GUI.Button(new Rect(10,10,200,100), "TestUnityDll:"+i);
    }
}

已知问题

  • 64位版本的Unity可能需要在Plugins目录下同时存在32位和64位版本的DLL文件,否则会提示找不到DLL(DllNotFoundException)的错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity 是一款非常强大的跨平台游戏引擎,它提供了丰富的功能和工具来帮助游戏开发者创建高品质的游戏。而使用 Newtonsoft.dll 则是为了在 Unity方便地处理 JSON 数据。 Newtonsoft.dll 是一个用于处理 JSON 数据的第三方库,也称作 Newtonsoft.Json。在 Unity使用它主要有以下几个原因: 1. 强大的功能:Newtonsoft.Json 提供了许多方便的方法和工具来序列化(将对象转换为 JSON)和反序列化(将 JSON 转换为对象)数据。这使得在 Unity 中处理 JSON 数据变得非常简单和高效。 2. 跨平台兼容性:该库已经被广泛应用于各种平台和编程语言中,并且与 Unity 兼容性良好。这意味着无论您将游戏发布到哪个平台或使用哪种开发环境,都可以轻松地使用 Newtonsoft.Json 进行 JSON 数据处理。 3. 第三方支持和社区:使用 Newtonsoft.Json 有着丰富的文档和教程资源,以及庞大的开发社区。这些资源可以帮助您好地理解和使用 Newtonsoft.Json,在开发过程中得到有价值的支持和建议。 4. 高性能和灵活性:Newtonsoft.Json 提供了高性能的 JSON 数据处理能力,并具有许多可配置的选项。这使得您可以根据自己的需求进行定制,并在高要求的游戏开发中实现好的性能和用户体验。 综上所述,Unity 使用 Newtonsoft.Json 主要是为了方便地处理 JSON 数据,它提供了强大的功能、跨平台兼容性、第三方支持和灵活性。这使得在 Unity 中处理 JSON 数据变得加简单和高效,为游戏开发者提供了多的选择和优化的空间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值