- 1 名前:デフォルトの名無しさん mailto:sage [2013/03/10(日) 15:10:32.28 .net]
- LuaやSquirrelやAngelScriptなどアプリケーションへの組み込み用途で
使われるプログラミング言語についてのスレッドです まとめwiki(なにか質問する前に必ずみること!) wikiwiki.jp/lua/ その他の参考URLは>2から ■前スレ 【Lua】組み込み系言語総合 その5【Squirrel】 toro.2ch.net/test/read.cgi/tech/1321063450/ ■過去スレ その4 hibari.2ch.net/test/read.cgi/tech/1301414458/ その3 hibari.2ch.net/test/read.cgi/tech/1272643397/ その2 pc12.2ch.net/test/read.cgi/tech/1243210301/ その1 pc12.2ch.net/test/read.cgi/tech/1205208141/ プログラミング言語 Lua その3 pc11.2ch.net/test/read.cgi/tech/1160799232/
- 158 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net]
- よくわからん側の主導で推進してるっぽいのが不安だ
- 159 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net]
- >>155
>昔、Pascalのbegin/endを、C言語で#defineしようとした人がいたらしい マクロの使い方としてK&Rにも書かれてる方法であり、取り立てて驚くような話ではない。
- 160 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net]
- 条件付きにて同意する
- 161 名前:デフォルトの名無しさん mailto:sage [2013/07/12(金) NY:AN:NY.AN .net]
- そもそもスクリプトでmallocやfreeを直接使うような事ってある?
- 162 名前:デフォルトの名無しさん mailto:sage [2013/07/13(土) NY:AN:NY.AN .net]
- Cの関数を忠実に再現するツールを使うと、スクリプトでmallocやfreeを使う事になる
忠実にしたくない場合はツールに丸投げできないと考えるのが自然
- 163 名前:デフォルトの名無しさん mailto:sage [2013/07/15(月) NY:AN:NY.AN .net]
- そういや、CriScriptって、今どうなってるんだろう?
- 164 名前:デフォルトの名無しさん mailto:sage [2013/07/15(月) NY:AN:NY.AN .net]
- >>162
CriScript作ってた人がgoogleかどっかに入ってプロジェクト終了、じゃなかったっけ
- 165 名前:デフォルトの名無しさん mailto:sage [2013/07/16(火) NY:AN:NY.AN .net]
- そこそこ良いものだったような気もするが、残念な話だな
- 166 名前:デフォルトの名無しさん mailto:sage [2013/07/26(金) NY:AN:NY.AN .net]
- Luaのコルーチンのように、スクリプト内で呼び出すと関数が終わるかSuspend(Luaだとyield)するまで実行して戻ってくるAngelScript用のコルーチンを作ってみたら、
自分のメソッドを呼び出すコルーチンをインスタンスとして持たせたら、循環参照が起こって解放されずにメモリリークに。 class A { coroutine c; void coFunc() { … Suspend(); … } void Init() { … c.SetFunction(cFUNC(this.coFunc)); … } void Update() { c.Execute(); } }; こんな感じでやると、cが循環参照になっちゃった。
- 167 名前:デフォルトの名無しさん mailto:sage [2013/07/27(土) NY:AN:NY.AN .net]
- あるある
その手の処理には弱参照が必要
- 168 名前:デフォルトの名無しさん mailto:sage [2013/07/27(土) NY:AN:NY.AN .net]
- AngelScript2.27.0のWorkInProgressに、「weak references」とかあるから、次のバージョンだと解決できそう。
- 169 名前:デフォルトの名無しさん mailto:sage [2013/07/29(月) NY:AN:NY.AN .net]
- AngelScript 2.27.0 is out - AngelCode - GameDev.net
www.gamedev.net/topic/645977-angelscript-2270-is-out/ ・デリゲートを作ったりデリゲートの情報を取得できる ・関数の引数や戻り値がconst参照か調べられる ・GCが把握しているオブジェクトを列挙してパフォーマンス改善に役立てられる ・弱参照 スクリプトのクラスでもアプリケーションのクラスでも使える
- 170 名前:デフォルトの名無しさん [2013/07/29(月) NY:AN:NY.AN .net]
- Angelscriptは参照カウントとGCを併用しているから
一応GCフラグのあるクラスであれば、弱参照を使っていなくて循環参照になっても、最終的にGCで解放されるはずなんだが 弱参照を使っていればもっと早いタイミングで解放されるので使うといいと思ふ
- 171 名前:デフォルトの名無しさん mailto:sage [2013/07/31(水) NY:AN:NY.AN .net]
- AngelScript2.27.0でやってみたが、循環参照の問題解決できなかった。
弱参照やら >・デリゲートを作ったりデリゲートの情報を取得できる の機能を利用してみたがダメだった。 C++側でasIScriptFunctionを保持するやり方を間違えているのかも知れない。
- 172 名前:デフォルトの名無しさん mailto:sage [2013/08/06(火) NY:AN:NY.AN .net]
- AS、さらに調べてみたところ、
「スクリプト内のクラスAにC++側で定義したクラスBをメンバ変数として持たせて、Bのインスタンスに this.〜でAのメンバ関数のdelegateを渡して保持する」 と循環参照が発生して解放されない、という状態になってるっぽい。 「AにBとスクリプト内のクラスCをメンバ変数として持たせて、Cのインスタンスのdelegateを渡して保持する」 場合は大丈夫っぽいんだが、さてどうしたものか。
- 173 名前:デフォルトの名無しさん [2013/08/07(水) NY:AN:NY.AN .net]
- いや、C++のクラスを弱参照かGCフラグに対応させろよ?
- 174 名前:デフォルトの名無しさん mailto:sage [2013/08/07(水) NY:AN:NY.AN .net]
- 弱参照って何?
- 175 名前:デフォルトの名無しさん mailto:sage [2013/08/07(水) NY:AN:NY.AN .net]
- ぬるぽするかもしれない可能性が存在することが保障されてるぽ
- 176 名前:デフォルトの名無しさん mailto:sage [2013/08/07(水) NY:AN:NY.AN .net]
- >>172
一応、asBEHAVE_GET_WEAKREF_FLAGを使って弱参照にしてみたり、 asOBJ_GCつけてメソッド入れてやってみたんだけど上手く行かないんだ。 asIScriptFunctionが内部で持ってるデリゲート用のオブジェクトが上手く解放できないみたい。
- 177 名前:デフォルトの名無しさん [2013/08/08(木) NY:AN:NY.AN .net]
- コードも無いのに分からない
循環参照にはならない筈なのに解放漏れがあるならそれは 何処かで参照カウント減らして解放するのを忘れているだけなんじゃないか としか言えない
- 178 名前:デフォルトの名無しさん [2013/08/08(木) NY:AN:NY.AN .net]
-
\\ \\\ \ ∧_∧ ( ´・ω・) G と) ガッ >>174 ヽ⌒)、 \人∧__∧  ̄ (_) >`д´)') ∨つ /
- 179 名前:デフォルトの名無しさん [2013/08/18(日) NY:AN:NY.AN .net]
- AngelScript 2.27.1 is here (so soon? yes)
www.gamedev.net/topic/646723-angelscript-2271-is-here-so-soon-yes/ バグフィックス メモリフットプリントの減少 void expressionで関数の出力引数を省略できる デフォルト引数を匿名に出来る
- 180 名前:デフォルトの名無しさん mailto:sage [2013/08/29(木) NY:AN:NY.AN .net]
- 素人だけど勉強がてらにAngel Scriptの解説見てたらめっちゃコンパイル言語でワロタ
- 181 名前:デフォルトの名無しさん mailto:sage [2013/08/30(金) NY:AN:NY.AN .net]
- //
/ / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
- 182 名前:デフォルトの名無しさん mailto:sage [2013/08/31(土) NY:AN:NY.AN .net]
- enum大好きな俺はAngelScriptも大好き。
- 183 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 10:45:33.66 .net]
- コード補完とか開発環境の恩恵受けられる組み込みスクリプトってある?
- 184 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 12:16:25.91 .net]
- 開発環境の恩恵と言えば最近はJavaScript (V8)じゃないの?
ほとんどが動的型付けだから コード補完の性能はどれも似たようなもの むしろ使い慣れた開発環境・エディタが対応しているかの方が重要だと思う
- 185 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 13:52:27.44 .net]
- luaにはIDEがあるけど、他でも探せばあるんじゃないか
- 186 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 15:20:57.01 .net]
- >>182
VS&C#にC#だな。
- 187 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 15:56:48.03 .net]
- 30億のデバイスで走るJavaを差し置いてC#が組み込み言語とか!
みたいなツッコミでOK?
- 188 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 16:01:13.71 .net]
- 30億のデバイスでデバッグできるね(ニッコリ)
って感じでさらに脱線させればOK?
- 189 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 18:35:17.50 .net]
- なにがライトワンスランエニ
- 190 名前:zェアだよ
絵空事ばかり 世迷い言に人々を巻き込みやがって 太平妖術だよ [] - [ここ壊れてます]
- 191 名前:デフォルトの名無しさん mailto:sage [2013/09/01(日) 18:36:18.64 .net]
- (´\r-、 ┼ + /`/`) +
┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
- 192 名前:デフォルトの名無しさん [2013/09/01(日) 20:38:37.26 .net]
- JavaScriptは言語仕様が黒魔術のようだ
- 193 名前:デフォルトの名無しさん mailto:sage [2013/09/02(月) 00:35:21.08 .net]
- AngelScriptはほぼC++かC#なんで、C++やC#用の補完とか使えた気がする。
- 194 名前:デフォルトの名無しさん [2013/09/02(月) 22:27:39.45 .net]
- SWIGってLuaでも使えたのか知らなかった
ラッパーとインタフェースの自動生成が捗る?
- 195 名前:デフォルトの名無しさん mailto:sage [2013/09/02(月) 22:41:22.04 .net]
- そもそもSWIGで捗った記憶がない
最近のは知らんが
- 196 名前:デフォルトの名無しさん [2013/09/04(水) 16:57:01.01 .net]
- SWIGだめなん?
- 197 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 17:20:42.93 .net]
- パターンファイル作ってクソ重いコンパイルでコケて修正して…
を繰り返してるうちに嫌になるな 生成されたシンボル名が1000文字突破してるの見て めまいがしたのもいい思い出だ
- 198 名前:デフォルトの名無しさん mailto:sage [2013/09/04(水) 18:12:40.97 .net]
- この手のタイプは元ソース次第だね
luabindより楽なケースもあればバインダ使わず生で書いたほうが楽なケースもある その上で、SWIGを選択するような状況でダメだというなら 他の選択肢はtoluaぐらいしかない で、SWIGとtoluaを比べると 冗長なのはデメリットだが依存せずピュアコードを吐くのはメリットなので好みの問題として 多言語対応でつぶしが効くという1点においてSWIGの勝ちかなと思うよ
- 199 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 19:15:01.41 .net]
- userdataってなんだ・・・
- 200 名前:デフォルトの名無しさん mailto:sage [2013/09/10(火) 19:36:31.38 .net]
- 好きなもの入れちゃっていいんだよ?
- 201 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 08:36:58.96 .net]
- ズブ…
- 202 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 16:59:49.05 .net]
- アーッ!
- 203 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 22:45:42.73 .net]
- UserDataは、スクリプトで操作したいオブジェクトのポインタとか入れるのが一般的かね。
- 204 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 22:51:01.71 .net]
- Cでやったほうが速いとか外部ライブラリ用の構造体へのポインタを突っ込んだり
- 205 名前:デフォルトの名無しさん [2013/09/11(水) 23:26:48.79 .net]
- ゲームの殆どをAngelScriptで組み
時間のかかる処理だけをネイティブコードに の方が開発しやすいかもしれない
- 206 名前:デフォルトの名無しさん mailto:sage [2013/09/11(水) 23:30:18.16 .net]
- 何と比較してだ
- 207 名前:デフォルトの名無しさん mailto:sage [2013/09/14(土) 03:21:57.79 .net]
- 横からだが、C++オンリーで組むのと比べて、って事じゃね
- 208 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 07:46:57.16 .net]
- スクワールはもういらんこなの?
- 209 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 08:12:11.62 .net]
- ∩_
〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
- 210 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 12:52:09.81 .net]
- Angelscript見てるとdllで良いんじゃないかと思えてくる
てかそういう用途としてdll使うのってもう流行ってないんかな?(昔のエロゲとか) 呼び出し元を変更したらコンパイルし直しになるのはスクリプトだって同じだし、バインダも必要ない。 もっぱらLGPLの回避法としてしか見なくなった
- 211 名前:デフォルトの名無しさん [2013/09/15(日) 13:28:21.98 .net]
- ライターにC++で直接書けとでも?
- 212 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 14:55:12.13 .net]
- ライターにAngelScriptで直接書けとでも?
- 213 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 16:54:49.61 .net]
- 何でAngelScriptなの
- 214 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 17:45:32.19 .net]
- 目指してる、未来がちがうからでしょ
- 215 名前:デフォルトの名無しさん [2013/09/15(日) 21:06:15.98 .net]
- C++ではコルーチンがなくてゲームに使うには困るかと思ったが
fiberやlongjmpを使ったら出来ない事はないな だがライターにVisuaStudio入れてもらうとか出来ないだろ? ライターには簡単にプログラムをインストール・実行できる環境が必要だ プログラマーにも ・コンパイルから実行までが速い(実行前にネイティブコード生成とか最適化をしないから) ・リフレクションが使える 等のメリットはある ラムダ式やデリゲートはC++11で使えることは使えるな
- 216 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 22:55:54.12 .net]
- スクリプトの場合、yieldやSuspendで途中で一時停止できるのはでかいと思うよ。
- 217 名前:デフォルトの名無しさん mailto:sage [2013/09/15(日) 23:44:33.85 .net]
- コルーチンなんて
boost他、標準ライブラリオンリーのイディオムも腐るほどあるし メリットが感じられない
- 218 名前:デフォルトの名無しさん [2013/09/16(月) 12:08:37.51 .net]
- それよりGCが自動なところ
- 219 名前:デフォルトの名無しさん [2013/09/16(月) 16:39:52.89 .net]
- Javaは一つのコードがあらゆる環境で動作する素晴らしい言語だった。
しかし、マイクロソフトが行ったCOM拡張によって互換性が失われ、パソコン用アプリが スマホでは動かないといったトラブルが起こるようになった。
- 220 名前:デフォルトの名無しさん mailto:sage [2013/09/16(月) 16:50:37.98 .net]
- C#とかの.NET系環境でのスクリプトっていうと
やっぱりIronPython/IronRubyとかになるんでしょうか? できればLuaを使いたいのですが、LuaDowNetは随分長い間止まってますし と質問しようと思って検索したら、AluminiumLua(2008年更新)ってのがあったので これ試してから出直します。 すみませんでした。 ttps://github.com/chkn/AluminumLua
- 221 名前:デフォルトの名無しさん mailto:sage [2013/09/16(月) 16:52:25.96 .net]
- 2008年は誤りで、今現在もアクティブなプロジェクトでした
たびたびすみません
- 222 名前:デフォルトの名無しさん [2013/09/18(水) 12:01:03.07 .net]
- C++ではヘッダーとソースそれぞれに関数宣言・定義を書かないといけないが
スクリプトだと一つのファイルに書ける C++で何でもヘッダーに関数定義を書いたらコンパイル時間が大変な事になる
- 223 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 12:09:19.32 .net]
- そこかよ
- 224 名前:デフォルトの名無しさん [2013/09/18(水) 12:16:26.38 .net]
- 宣言と定義で分けたりせず
一つのファイルに書けてありがたいだろ?
- 225 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 12:57:45.99 .net]
- そのくらいなら JavaでもC#でもDでもできる
- 226 名前:デフォルトの名無しさん [2013/09/18(水) 13:45:40.90 .net]
- 全部C++で書くのでなければ別に良いんだけどな
Javaで書くとAndroidには移植しやすいかもしれないがiPhoneにはそのまま持っていけない MonoはAndroid、iPhoneでも動くけど無料の開発環境なし PCでも、未だにXPを使っている様な人はVMを入れていなかったり その点スクリプト言語のVMは小さいから同梱しやすい Dとか知らん!
- 227 名前:デフォルトの名無しさん mailto:sage [2013/09/18(水) 14:47:00.98 .net]
- >>218
コミュニティの規模が小さいのでJScript一択 保守まで考えるとhackはproductとして採用できない
- 228 名前:デフォルトの名無しさん mailto:sage hack(笑) product(笑) [2013/09/18(水) 22:41:41.90 .net]
- >>225
Luaの方がスクリプトを書きなれているので、できればそっちを使いたいと思っていました。 JScriptの利用も少し考えましたが、利用方法がいまいちパッとしなかったので見送りました。 保守性は、個人/小規模利用なので大して気にしていません。
- 229 名前:デフォルトの名無しさん mailto:sage [2013/09/19(木) 06:18:34.30 .net]
- //
/ / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ Lua!! / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ ∩_ 〈〈〈 ヽ 〈⊃ } ∩___∩ | | | ノ ヽ ! ! / ● ● | / | ( _●_) ミ/ Lua!! 彡、 |∪| / / __ ヽノ / (___)
- 230 名前:デフォルトの名無しさん mailto:sage [2013/09/24(火) 01:30:13.90 .net]
- mrubyはここでOK?
- 231 名前:デフォルトの名無しさん mailto:sage [2013/09/24(火) 19:59:45.11 .net]
- 組み込みだからOKだけど、話題にできる人はいないかも
- 232 名前:デフォルトの名無しさん mailto:sage [2013/09/24(火) 21:03:42.63 .net]
- mrubyの組み込みは、アプリケーション組み込みじゃなくて、家電とかへの組み込みのほうだと思うんだ。
アプリケーション組み込みなら、mrubyでなくとも本家のrubyでもできるし
- 233 名前:デフォルトの名無しさん mailto:sage [2013/09/24(火) 23:53:45.13 .net]
- べつに、rubyもmrubyもここでやればいいじゃん。
- 234 名前:デフォルトの名無しさん mailto:sage [2013/09/25(水) 00:47:43.99 .net]
- Rubyはテキストの変換に使う事が多いな。
CSVファイルからスクリプトに変換したりとか。
- 235 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 11:18:33.53 .net]
- luabindを使おうとしたら、lua_openで未解決の外部シンボルがでたー。ちゃんとライブラリ設定してるのに。。。
- 236 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 12:04:12.82 .net]
- バインダーなど使わないでスタック方式に慣れるのが結局は一番だよ
- 237 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 18:18:42.84 .net]
- やっとコンパイル出来た。今から初めて組み込むのでどの処理をluaにもっていこうか全然決まってない。みんなどういう感じで組み込んでるの?
- 238 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 18:33:15.82 .net]
- アプリ完成後にもカスタマイズしたりする部分
- 239 名前:デフォルトの名無しさん mailto:sage [2013/09/27(金) 23:10:20.40 .net]
- ゲームとしてのエンジン部分を全部Lua側から呼び出せるようにして、
あとはLuaでアルゴリズム組むだけでゲームを作れるようにしておくとすごい快適 個人的には各種パラメータを、数値をイジるだけじゃなく 定義を修正しまくっても余裕なのが最高
- 240 名前:デフォルトの名無しさん mailto:sage [2013/09/28(土) 09:12:16.18 .net]
- 逆に言うとそれだけなんだからLuaで十分なんだよな。
Luaだと辛いなーな部分はCで書きゃいいだけ。
- 241 名前:デフォルトの名無しさん mailto:sage [2013/09/28(土) 11:19:10.07 .net]
- マインクラフトでJRubyやってたんだけどluajなんてのもあったんだね
Cのバインディングに挫折しそうになってた頃に出会ってたら危なかった
- 242 名前:デフォルトの名無しさん mailto:sage [2013/09/28(土) 15:57:45.92 .net]
- 俺はそこまでやるなら端からもっと高機能な言語使えばいいと思うけどなあ
- 243 名前:デフォルトの名無しさん mailto:sage [2013/09/29(日) 00:13:43.34 .net]
- AngelScript|Д`)ノ<きたわよ
C++側のクラスとかもそのままスクリプトで使えるよ。
- 244 名前:デフォルトの名無しさん mailto:sage [2013/09/29(日) 02:20:08.22 .net]
- (´\r-、 ┼ + /`/`) +
┼ (\. \! * // ,/) * + * (ヽ、 \ + * / /) + ⊂ニ ) * + ( ニ⊃ * + ⊂、 ( ∩___∩ ノ ⊃ + * (/(/ ヽ | ノ ヽ / 、)ヽ) ┼ + (/ ∨ ● ●レ /⌒) 、)ヽ) * (/' | ( _●_) ミ' /、)、)´ + + (/'ヽ 彡、 |∪| ノ / AngelScript!! + / __ヽノ / * + ┼ (___) / + / / (_ ⌒丶.. | /ヽ }. し )) ソ トントン
- 245 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 19:31:49.27 .net]
- >>635
www.lua.org/
- 246 名前:デフォルトの名無しさん mailto:sage [2013/10/10(木) 19:33:12.35 .net]
- gobak
- 247 名前:デフォルトの名無しさん mailto:sage [2013/10/13(日) 01:54:16.74 .net]
- Luaでちょっと質問なんだけど
Luaの無名関数をC関数で受け取って、 それを、C側から任意のタイミングでコールしたいんだけど、どうしたらいいの? lua_type()の戻り値を見ると、LUA_TFUNCTION型みたいなんだけど、これはどう扱ったらいいんだろう…
- 248 名前:デフォルトの名無しさん mailto:sage [2013/10/13(日) 06:06:13.41 .net]
- 自己解決
luaL_refとluaL_unrefで参照数を操作して、生かして、 生かしておいたのを lua_rawgetiでスタックにプッシュして lua_call系でいいんだね
- 249 名前:デフォルトの名無しさん [2013/10/25(金) 14:27:11.51 .net]
- Luaスクリプトについての質問なんですが、
Luaにエラー関数を設定する場合は lua_pcallにてエラー関数のスタックを設定しますが、 これをコルーチンで行う場合、 lua_resumeを呼びだすのですがエラー関数の設定が見当たらないです。 どこで設定すると呼びだされるようになるのでしょうか…。 お願いします!
- 250 名前:デフォルトの名無しさん mailto:sage [2013/10/25(金) 15:45:29.07 .net]
- 保護モード事態が特殊な動作なわけだから resume を pcall すれば?
- 251 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 00:38:50.34 .net]
- クラスの中にlua_stateを作っておいて、値の更新とかをlua側でしたいんですけど、
luaに自分自身を渡して、lua側で値を更新させて、自分自身に反映させるのは どうすればいいでしょう。lua_pushlightuserdataじゃインスタンスは別になる?
- 252 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 01:04:30.61 .net]
- まずC++側とC側に分けて
値の更新をC側でできるようにしてから C側の内部でLuaを使う
- 253 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 01:06:57.46 .net]
- C++でsetter作って、luaでそれを呼ぶってことですか?
すみません。C++とCで分けるという所はどういう感じで分けるのでしょうか。
- 254 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 10:59:08.34 .net]
- luaで何かアクションをするとC++側の値が書き換わるようにしたい?
userdataにメタテーブルを仕込んでやればできる。他のやり方も あると思うけど。 例えばuserdataにthisや関数へのポインタを入れておいてメタテーブルに cfunctionを登録しておく。登録したcfuntcionではuserdataから thisとかを取り出して何かすればいい。
- 255 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 12:43:26.03 .net]
- >>252
やりたいことは、リコンパイルしなくても値を変更できるようにしたいです。 そこで、luaにオブジェクトの初期処理や更新処理を持っていって、描画はC++で しようと思ってます。 教えていただいた内容を調べながら試してみます。
- 256 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 12:55:58.52 .net]
- それだったら、C++からLuaの変数を読み出すだけでもいいんじゃない?
C++でLuaチャンク実行→Luaチャンク実行終了→変数の値を読み出して利用する。 LuaのプログラムからCallbackさせながら、C++プログラムと協調動作させる 必要があれば、252のようにする必要があるけど。
- 257 名前:デフォルトの名無しさん mailto:sage [2013/11/02(土) 13:10:44.93 .net]
- >>254
初期処理でクラスの各項目値は、luaのメソッドを呼び出してその戻り値を受けるので 出来たのですが、更新処理となるとロジックがあって、単純に戻り値を受け取るだけだと 中々難しいなーと思って、ロジックもluaに移そうと思っていました。 そういうのはやっぱり、lua⇒C++の関数⇒luaみたいな感じになるんですね。 自分のイメージとしてはC++でインスタンスをluaに渡す⇒luaで引数のインスタンスに対して 色々な処理を行い値を変更する⇒luaメソッド終了⇒C++に処理が戻るみたいな感じです。
- 258 名前:デフォルトの名無しさん mailto:sage [2013/11/03(日) 10:39:57.23 .net]
- スクリプト内の変数の値をC/C++側から操作したいって事なのかな。
|

|