Unity in Rust

Rust言語をUnityから呼び出してテクスチャ画像を表示するデモを見つけましたので、試してみました。

参考動画)

難易度はかなり高いですが、このしくみはいろいろと活用できそうです。

インストール)
※コマンドは環境によってかわるため参考までに(Ubuntu20.04/WSL)

git clone https://github.com/keijiro/UnityRustPlugin.git
sudo apt install gcc-mingw-w64-x86-64
rustup target add x86_64-pc-windows-gnu
cd UnityRustPluting/Plugins
./build.sh

このままUnityで開いただけでは何も表示しないので、Test.csをオブジェクトのマッピングします。
ここではCubeとShpere、2つ使用しました。

実行画面

ここまで簡単に動作確認ができるのはありがたいです。
肝心のC#からRustへの呼び出し部分のI/Fを確認してみます。

Assets/Test.cs

Plugin/src/lib.rs

generate_image関数を呼び出しで、Cを経由するグルーコードが書かれています。
(Haskellとかもそうでした。http://bitlife.me/archives/tag/haskell)
こういうの調べると大変なんですよね。
I/Fの書き方がわかればいろいろと応用ができます。

別にRustなんかつかわずC#でみんな書けばいいのでは、という声が聞こえてきそうですが、外部の言語を呼び出せるとその言語でしかないライブラリが活用できるから便利なのです。
既存の機能を呼びだしりするときにこういうテクニックはよく使われます。

今回、どうしても残しておきたかったので引用させていただきました。

すばらしいデモ、ありがとうございました!