知りたいこと
・Lua(MoonSharp)における選択肢の実装
やりたいこと
UnityでRPGの制作をしたいと思っており、現在ゲームイベントの実装をしています(勝手にストーリーが進むようなもの)。
その際、Luaを使ってゲームイベントを作成していたのですが、NPCが質問をしてきてPlayerが選択肢を選んでイベントを進める実装方法が分からず質問させていただきました。
コード
以下のサイトを参考に、順番にログを出したり、ゲーム画面上のテキストを変更することはできました。
http://carving.roguelive.chicappa.jp/?eid=41
ただ、EventDataクラスのselect関数の詳細がなく、どうやって実装しているのかわかりません(ブログでも質問中です)。
Luaに詳しい方がいれば、教えていただけると助かります(サイトと同じ方法でなくても構いません)。
以下サイトのコードを引用
csharp
1// スクリプト内から呼び出す関数群 2[ MoonSharp.Interpreter.MoonSharpUserData ] 3class EventData 4{ 5 // 画面にセリフを表示 6 public void serif( string mes ) 7 { 8 Debug.Log( mes ); 9 } 10 11 // 選択肢を表示 12 public void select( string title, params string[] choices ) 13 { 14 // 中身は省略 15 } 16} 17 18// EventDataをスクリプト内で使えるようにする 19MoonSharp.Interpreter.UserData.RegisterAssembly( typeof( EventData ).Assembly );
csharp
1string code = 2@" 3 return function() 4 5 event.serif( 'やあ。ウチは[word:15000]から来た[name:10103]やで' ) 6 coroutine.yield() 7 8 event.serif( '自分はどっからきたん?' ) 9 coroutine.yield() 10 11 event.select( '', 'ここが地元', '別の島', '[word:15000]', 'わからない' ) 12 local selected = coroutine.yield() 13 if selected == 0 then 14 15 event.serif( 'へえ。じゃあウチよりこの辺には詳しそうやね' ) 16 coroutine.yield() 17 18 elseif selected == 1 then 19 20 event.serif( 'この島へは何しにきたんやろなあ' ) 21 coroutine.yield() 22 23 elseif selected == 2 then 24 25 event.serif( '同郷やね。でもそんな風には見えへんなあ?' ) 26 coroutine.yield() 27 28 elseif selected == 3 then 29 30 event.serif( 'どういうこっちゃ' ) 31 coroutine.yield() 32 33 end 34 35 end 36";
やったこと
・UnityにMoonSharpを入れた
・https://www.moonsharp.org/のチュートリアルを一通り読んだ
・読み進めるだけのゲームは作った:https://unityroom.com/games/shimazusai_18th
参考にしたサイト
・https://midolog.net/how-to-create-adventure-game-with-unity/
・http://carving.roguelive.chicappa.jp/?eid=41
・https://www.moonsharp.org/
あなたの回答
tips
プレビュー