Unityにmrubyを組み込んで
抽選をしてみた
@kishima
Kawasaki.rb#51 (2017/8/23)
自己紹介
● @kishima
● 組み込み系技術者
●
一時期、海外を這いずり回っていましたが
●
最近はまた研究よりことをやっています
● TokyuRuby会議のスタッフをやってることがRubyとの数少
ない接点かも
●
2017/7/29
TokyuRuby会議11が無事開催され
ました
参加された方ありがとうございます
今回も多くの方に楽しく参加頂き感
謝であります
LT抽選
● TokyuRuby会議では、参加者からランダムで抽選
して、当選した人にLTしてもらう、「抽選LT」があり
ます
● その抽選アプリを少し勉強中のUnityで作りました。
Ruby要素が不足していたため、mrubyを組み込む
ことにしました。
Unity
● 言わずと知れたゲーム開発環境
● 箱庭的なゲームを実装してみたくなって、勉強をは
じめました
● 配布されているAssetなどを組みわせると、3Dオブ
ジェクトでもとても簡単に操ることができて、たしか
にこれはすごい。
● 基本、専用のゲームエディタ+C#スクリプトで動か
してます
● 個人利用レベルなら無料で利用できる
やったこと
● 2015 Unity Advent Calendar の同志社大電気情
報研究会の下記の記事の内容をなぞった!
●  ★“mruby On Unity” @denx_doshisa
●    https://denx.jp/mruby-on-unity
●
● 以上!
ここで終わるのもあれなので補足
● 手順
● ①mrubyビルドに必要な物を揃える
●   Visual Studio, Ruby, bison
● ②mrubyをビルドして.libファイル作成
●   必要なmrbgemsもあわせて
● ③mrubyをDLL化する
– Unityから呼び出される関数もここでC++で定義して
– エクスポートする(こういう作法は先人の知恵が無いと厳しい)
● ④mruby DLLをUnityにプラグインとして組み込む
● ⑤UnityのC#からDLLの関数を呼び出し、mrubyインスタンスを
●  作成。 Rubyのコードを与えて実行する
動き方
C# script mruby
インスタンス
mrb_open()でmrubyインスタンス生成
mrb_load_string()でmrubyインスタンスで
Rubyのコード(抽選対象者者リストと抽選ロ
ジック)を読み込ませて実行させる
デリゲートを関数ポインタとして渡す
C#スクリプトは、結果のリストを関数ポインタ
のコールバックとして受け取る
抽選結果に応じて、C#スクリプトを用
いて画面表示を行う
デモ
つまづきポイント
UTF-8文字列を扱うときは、mrbconf.hのmrubyの”//#define
MRB_UTF8_STRING”のコメントを外す
Windowsで正規表現のmrbgems “mruby-onig-regexp”をビ
ルドしようとして失敗
Cのコンパイル不要なものに変更
>Rubyで使える記法がすべて使えるわけではないので、そこも
注意。使っているmrbgemsに注意を払うこと
Unityにmrubyを組み込んで抽選をしてみた

Unityにmrubyを組み込んで抽選をしてみた