CommandMode.UseItemPanelToItemPanel;Input.ResetInputAxes();}鎧か武器かで判断しキャラクターの装備から外します。今のままだとマウスのクリックでコマンドの選択をする時にボタン外をクリックするとボタンの選択が解除されてしまいます。そこでEventSystemの選択が解除された時に現在のcurrentCommandに応じてそのパネルの一番最初の子要素を無理やり選択状態にし、選択が解除されている状態がないようにしておきます。Updateメソッドの最後に以下の処理を追加します。{EventSystem.current.SetSelectedGameObject(useItemSelectCharacterPanel.transform.GetChild(0).gameObject);}}EventSystem.current.currentSelectedGameObjectがnullの時はUIが選択されていない状態なので、その時のcurrentCommandの状態を見て、該当するパネルの最初の子要素を無理やり選択させるようにしています。アイテム一覧にあらかじめボタンを配置しておく方法この記事の最初の方で言及しましたが、この記事を含めてユニティちゃんのRPGを作ってみようのカテゴリ全般でUIのパネルに表示するボタンをプレハブからインスタンス化しています。この方法だと今開いているパネルの前のパネルに戻った時にインスタンス化したボタンを全部削除する処理が必要になります。アイテム数が多くなったり頻繁にキャンセルボタンを押して戻って選択して戻ってという処理を繰り返すと無駄にボタンのゲームオブジェクトの削除と生成を繰り返します。そこでアイテム一覧等にあらかじめボタンを配置しておいてあらかじめあるボタンを操作してボタンの子要素のTextやボタンを押した時の動作を設定した方がいいかもしれません。わたくしの場合は最初にボタンプレハブをインスタンス化する方法で作ってしまったのでもう書き換えませんが・・・・(^_^;)あらかじめボタンを配置しておくやり方を書いておきます。キャラクター選択パネルなどでもあらかじめボタンを配置しておくことが出来ますが、個数が多いアイテム一覧を例にとっています。ItemPanelの子要素のContentにAssets/RPG/Prefabs/UI/ItemPanelButtonプレハブをゲーム内で使用するアイテムの総数分作成します(持っているアイテムより少なく作ってはいけません)。次にアイテム一覧で一回に表示されるアイテムボタンの次の二つのボタン(15個目と16個目のボタン)にItemPanelScrollScriptを取り付けます。CommandScriptスクリプトからItemPanelScrollScriptのSetScrollValueメソッドを呼び出してスクロール値等を渡して設定していましたが、既にボタンは配置しているのでItemPanelScrollScriptであらかじめ値を設定してしまいます。415f;次にCommandScriptのOnEnableメソッドでアイテムパネルボタンがあれば削除していた箇所をコメントにするか削除します(消す必要がなくなったからです)。Destroy(content.transform.GetChild(i).gameObject);//}Updateメソッドのキャンセルボタンを押した時の処理でも同様にアイテムパネルボタンを削除している所をコメントにするか削除します。Destroy(content.transform.GetChild(i).gameObject);//}キャラクターが持っているアイテムのボタンを表示しているCreateItemPanelButtonメソッドを修正します。"アイテムを持っていません。"アイテムを持っていません。true;}}ItemPanelButtonPrefabをインスタンス化していた箇所をcontent.transform.GetChild(itemPanelButtonNum).gameObject123content.transform.GetChild(itemPanelButtonNum).gameObjectとしてcontentの子要素のゲームオブジェクトを順番に取得するようにします。以前アイテム一覧を開いた時に持っているアイテムの数より後のボタンは非表示にしている可能性がある為、アクティブにしておきます。itemButtonIns.SetActive(true);123itemButtonIns.SetActive(true);ボタンには依然開いた時にボタンを押した時に実行するメソッドが設定されている可能性があるのでitemButtonIns.GetComponent<Button>().onClick.RemoveAllListeners();123itemButtonIns.GetComponent<Button>().onClick.RemoveAllListeners();でボタンを押した時に実行する処理を削除します。ボタンが押された時にSelectItemメソッドの呼び出し処理の追加と引数を設定します。アイテムのボタンはインスタンス化するか元から配置しているものを使うかの違いだけなので大きな変化はありません。ItemPanelButtonは持っているアイテム数以上に配置したのでアイテム数を超えた場合はその後のアイテムボタンは非表示にします。{という条件に変更します。これであらかじめItemPanelButtonを配置しても同じような処理に出来ました。アイテムコマンドの確認これで機能が出来ました。実行して試してみましょう。上のようにアイテムコマンドが出来上がりました。終わりに今回のアイテムコマンドの処理は非常に面倒な処理が多いですね・・・・。処理も分かり辛くなってますし・・・・、量が多いのでどこか記述漏れや間違いがあるかもしれません。(._.)前回のステータスコマンドと今回のアイテムコマンドはパネルを開いてそのパネルを最前面に表示しコマンド処理をしていますが、Animationを使ってUI画面が動くように作るとまた違った良さが出そうですね。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。サイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事への質問はコメント欄にお願いいたします)。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。Д`)シクシク...お知らせ2020/01/01あけましておめでとうございます。(^^)/ユニティちゃんのRPGを作ってみようのPartyStatusスクリプトでpartyMembersのListの型がCharacterStatusとなっていたのでAllyStatusに変更しました。変更したというか、元々AllyStatusに書き換える前のスクリプトを掲載していたので修正しました。ユニティちゃんのRPGを作ってみよう10ーコマンド画面の作成とステータスの表示ーユニティちゃんのRPGでコマンド画面の作成とステータスコマンドを作成し、選択したキャラクターのステータスを表示するようにしていきます。20:00GetPartyStatusメソッドの戻り値もそれに伴って変更しています。2018/08/07コメント欄へのわたくしの返信は停止しております。わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。21:41も参照してみてください。コメントの返信はありませんが、回答は記事に反映されている可能性があります。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。Unityを使った3Dゲームの作り方(かめくめ).。