免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Unity 導(dǎo)入C# DLL、C\C++ DLL 等外部庫(kù)

Untiy 導(dǎo)入C# DLL、C\C++ DLL、OSX BUNDLE、iOS Android 等插件。

參考官方教程:Writing Plugins

  網(wǎng)上已經(jīng)有很多類似的了。這里作為自己的筆記,記錄如何做一個(gè)簡(jiǎn)單DLL(Dynamic Link Library)動(dòng)態(tài)鏈接庫(kù)。
  創(chuàng)建使用環(huán)境為VS2015。


C# DLL

1. 創(chuàng)建類庫(kù)文件,注意選擇.NET最好不要大于3.5版本,因?yàn)閁nity使用的mono版本為2.0,支持最多到.NET 3.5版本。

2. 如下圖,創(chuàng)建一個(gè)MyRandomClass,包含一個(gè)公有方法GetRandom(),獲取C#自帶隨機(jī)數(shù)獲取函數(shù)。

3.編譯生成.dll文件,地址看輸出信息。

4.生成兩個(gè)文件。

5.將其中.dll后綴文件直接拖入U(xiǎn)nity項(xiàng)目中Assets\plugins目錄,若無,自行創(chuàng)建。

6.隨便給個(gè)GameObject添加如下C#代碼文件,用于測(cè)試是否成功調(diào)用C#DLL。

7.運(yùn)行三次,成功666。


C++ DLL

1.要注意一開始創(chuàng)建不是選DLL(通用Windows 8.1),那是用于Win 8.1和Windows Phone 8.1的。同樣選擇不大于.NET3.5的版本。

2.創(chuàng)建向?qū)ё⒁膺xDLL和空項(xiàng)目(如果需要其他也可以不選)。

3.代碼如下,創(chuàng)建在源文件下。關(guān)于 __declspec(export)更多知識(shí)可以參考這里。這個(gè)功能是調(diào)用< algorithm>庫(kù)里面std::max函數(shù)來返回兩個(gè)整形最大值。

4.同樣編譯生成一堆文件。

5.同樣只需要后綴為.dll的文件拖入項(xiàng)目。

6.同樣在Assets\Plugins目錄下。

7.測(cè)試腳本,需要聲明DLL并帶特性[DLLImport]。

8.測(cè)試兩個(gè)值。

9.成功輸出最大值。


.BUNDLE 等其他外部庫(kù)

  當(dāng)需要適應(yīng)多個(gè)平臺(tái),而且已經(jīng)做好外部庫(kù),可以用下面的方法來根據(jù)平臺(tái)而選中合適的外部庫(kù)??梢灾苯釉赨nity的File->Build Settings選擇平臺(tái)來測(cè)試。選中的平臺(tái)代碼可以直接體現(xiàn),在#if \ #enif語句正常顯示的(非灰色的)。

using UnityEngine;using System.Runtime.InteropServices;           //[DllImport]特性的命名空間。public class TestScript : MonoBehaviour{    public int x;    public int y;#if UNITY_STANDALONE_WIN                        //WINDOWS系統(tǒng)    const string dll = "MyMaxNumberDLL";#elif UNITY_STANDALONE_OSX                      //OSX(Mac)系統(tǒng)    const string dll = "MyMaxNumberBUNDLE";#elif UNITY_IOS                                 //IOS系統(tǒng)    const string dll = "__Internal";#else                                           //Android或其他    const string dll = " ";#endif    [DllImport(dll)]    private static extern int GetMaxNumber(int x, int y);    public static int GetMax(int x,int y)    {        #if (UNITY_STANDALONE_WIN || UNITY_STANDALONE_OSX || UNITY_IOS)            return GetMaxNumber(x, y);        #else            return -1;        #endif    }    private void Start()    {        Debug.Log(GetMax(x, y));    }}

遇到的錯(cuò)誤

  在使用C++的DLL時(shí),出現(xiàn)了一個(gè)錯(cuò)誤:“Failed to load ‘Assets/Plugins/MyMaxNumberDLL.dll’, expected x64 architecture, but was x86 architecture. You must recompile your plugin for x64 architecture.”在stackoverflow有人回答說需要多導(dǎo)入除了.dll文件的另外4個(gè)文件,但無果,又設(shè)置了Unity中Build Settings中windows平臺(tái)的Architecture,但也無果。最后發(fā)現(xiàn)原來是C++ DLL編譯生成時(shí)選擇了x86,改成x64重新編譯導(dǎo)入就好了。

需要選擇x64架構(gòu)。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
淺入深出QWT
Unity與 DLL文件 ??| 什么是DLL??
解決Chrome的“以下插件無響應(yīng)”
Unity 3D 調(diào)用DLL的方法
MonoDevelop 讓Mac OSx/ Linux ...下寫C#更輕松
Windows 終極模擬 Mac OSX Leopard 風(fēng)格全效果| ※
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服