Lua側で設定をして、その設定をそのままUnity側に送るという事を想定している。
例えば、キャラクターの説明文などをLuaスクリプト上に記載しておき、それをUnity側に送ってTextに貼りつければそのまま表示される、といった具合だ。
で、そういえば全角文字列の表示検証した事なかったなと思い、試しに送ってみたら、見事に表示されない。
IntPtr res_s = NativeMethods.lua_tolstring(luastate, i, out res);
string resString = Marshal.PtrToStringAnsi(res_s);
このresStringが空になったのだ。
luastateを見る限り、文字列として認識している何かが格納されている、というところまでは判明したのだが、そもそもresの中身が0なので、LuaDLL側での処理で、送っているバイト文字が何か形式違反していて認識されていないのだろうと仮定し、それじゃあLuaスクリプト側の文字コードとかその辺が原因だろうという事で、色々試してみた。
・sjis ⇒ 空文字
・unicode ⇒ エラー(attempt to call a string value)
・UTF-8 ⇒ 空文字
・unicode(BOM有) ⇒ 成功
・UTF-8(BOM有) ⇒ 成功
というわけで、対症療法だけやるなら、Luaスクリプトの文字コードをUTF-8のBOM有にしておけばいいっぽい。
ただ、なんでそうなっているのかは、LuaDLLのプログラムまで見にいく元気がないので、今回は置いておくことにする…。