【3Dゲームエンジン】Unity 4at GAMEDEV【3Dゲームエンジン】Unity 4 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト816:名前は開発中のものです。 15/08/09 23:31:12.99 eHkK7Iki.net Proを買う 817:名前は開発中のものです。 15/08/10 00:39:12.02 NcNOCafI.net キャラIDとスキルIDをボタンの引数として登録する機能を作っています。 ボタンを押した時にShowSkillWindow(int, int)を実行するのですが、 2個目の引数の値をこの時点のiの値で呼び出したいのに、ボタンを押した時点での値で呼び出されてしまいます。 (この場合はループ終了後のiの値である5が引数になる) public void Init(int charaID) { for (int i = 0; i < 4; ++i) { Button.ButtonClickedEvent clickEvent = new Button.ButtonClickedEvent(); Debug.Log("charaID:" + charaID + ", SkillID:" + i); clickEvent.AddListener(() => BattleManager.I().ShowSkillWindow(charaID, i)); skillButtonList[i].GetComponent<Button>().onClick = clickEvent; } } 引数を固定させる方法か、代わりになる方法はありませんか? 818:名前は開発中のものです。 15/08/10 01:01:41.62 NcNOCafI.net 解決と言えるのか自信がないけど意図した動作が出来たので残します。 引数を保持するための構造体の定義を作っておき、そこから処理を呼ぶ方法で実装出来ました。 構造体を作って放置するのがメモリ的に不安なので、改善点あれば教えてもらえると助かります。 struct StrSkillAction { public UnityAction SkillAction(int charaID, int skillID) { return () => { BattleManager.I().ShowSkillWindow(charaID, skillID); }; } } public void Init(int charaID) { for (int i = 0; i < 4;++i) { Button.ButtonClickedEvent clickEvent = new Button.ButtonClickedEvent(); Debug.Log("charaID:" + charaID + ", SkillID:" + i); StrSkillAction eventClass = new StrSkillAction(); clickEvent.AddListener(eventClass.SkillAction(charaID, i)); skillButtonList[i].GetComponent<Button>().onClick = clickEvent; } } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch