VSCode+C#でDLLを作成してUnityで使用する方法
概要
VSCode+C#でDLLを作成してUnityで使用する
環境
Visual Studio Code: 1.60.1 (user setup)
C# for Visual Studio Code (powered by OmniSharp).:1.23.15
.Net Framework SDK:4.7.1
Unity:2020.3.15f2
DLLプロジェクトを作成
今回作るプロジェクトは「DLLTest」とする
Unity側は「DLLTestUnity」とする
手順
- ディレクトリを作成しVSCodeで開く
- VSCodeのターミナルから作成コマンドを打つ
- .csprojを設定する
- プログラムを書く
- ビルドしてDLLを作成する
ディレクトリを作成しVSCodeで開く
VSCodeのターミナルから作成コマンドを打つ
dotnet new classlib -o DLLTest
.csprojを設定する
Unity用のDLLは「.Net4.x」または「.Net Standard 2.0」で作る必要がある
Unity+VSCodeでブレークポイントを使うのに必要な.NetFrameworkSDK4.7.1が入っているので今回はそれを設定した
プログラムを書く
「Class1.cs」を「DLLTest.cs」にリネームする
足し算を行うSumメソッドを作成する
namespace DLLTest
{
public static class DLLTest
{
public static int Sum(int x, int y)
{
return x + y;
}
}
}
ビルドしてDLLを作成する
ビルドコマンドを叩く
publishではなくbuildにした場合は署名がなくてUnityで読み込めないので注意(はまった!)
※cdコマンドでDLLTestに移動してから次のコマンドを叩くこと
Windowsは以下
dotnet publish -c Release -r win-x64
Macは以下(未検証)
dotnet publish -c Release -r osx-x64
以下にDLLが作成されるのでUnityプロジェクトに持っていく
bin\Release\net471\win-x64
Unity上で実行
手順
- 新規Unityプロジェクトを作成する
- DLLをAssets以下に配置
- Test.csファイルを作成してMainCameraにつける
- 実行する
新規Unityプロジェクトを作成する
DLLをAssets以下に配置
Test.csファイルを作成してMainCameraにつける
Test.cs
using UnityEngine;
public class test : MonoBehaviour
{
void Start()
{
var x = DLLTest.DLLTest.Sum(10, 20);
Debug.Log(x);
}
}
実行する
DLL内にUnityのメソッドを入れる方法
手順
- UnityEngine.dllをDLLプロジェクトにコピー
- .csprojでDLLの読み込み設定
- プログラムを書く
- DLLを作成する
- UnityにDLLを上書き
- Test.csを書き換え
- 実行する
UnityEngine.dllをDLLプロジェクトにコピー
UnityEngine.dllをUnityから持ってきてDLLのプロジェクトにコピーする
UnityHubからインストールした場合、以下の場所にある
C:\Program Files\Unity\Hub\Editor\2020.3.15f2\Editor\Data\Managed
.csprojでDLLの読み込み設定
以下を追加
<ItemGroup>
<Reference Include="UnityEngine">
<HintPath>UnityEngine.dll</HintPath>
</Reference>
</ItemGroup>
プログラムを書く
namespace DLLTest
{
public static class DLLTest
{
public static int Sum(int x, int y)
{
return x + y;
}
public static void ConsoleWrite(object message)
{
UnityEngine.Debug.Log(message);
}
}
}
DLLを作成する
Windows
dotnet publish -c Release -r win-x64
Mac
dotnet publish -c Release -r osx-x64
UnityにDLLを上書き
作成したDLLTest.dllをUnityのAssets以下のDLLTest.dllに上書き
Test.csを書き換え
using UnityEngine;
public class test : MonoBehaviour
{
void Start()
{
var x = DLLTest.DLLTest.Sum(10, 20);
DLLTest.DLLTest.ConsoleWrite(x);
}
}
実行する
Author And Source
この問題について(VSCode+C#でDLLを作成してUnityで使用する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/sawasaka/items/5697128cf9bdd712f70b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .