質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

2086閲覧

ゲーム選択肢を方向キーでカーソルで合わせたいのですが…。

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2017/01/16 03:31

ノベルゲームの選択肢を方向キーを押してボタン選択が変わるというプログラムを付け加えたいのですが、初心者でうまくいきません。助言いただけたら有り難いです。

選択肢のプログラムです↓

using

1using UnityEngine.UI; 2using Utage; 3using System.Collections.Generic; 4 5namespace Utage 6{ 7 8 /// <summary> 9 /// 選択肢表示のサンプル 10 /// </summary> 11 [AddComponentMenu("Utage/ADV/UiSelectionManager")] 12 public class AdvUguiSelectionManager : MonoBehaviour 13 { 14 /// <summary>ADVエンジン</summary> 15 public AdvEngine Engine { get { return this.engine ?? (this.engine = GetComponent<AdvEngine>()); } } 16 [SerializeField] 17 AdvEngine engine; 18 19 /// <summary>選択済みのテキスト色</summary> 20 /// <summary>選択済みのテキスト色を変えるか</summary> 21 enum SelectedColorMode 22 { 23 None, //選択済みでも変えない 24 Change, //選択済みで色を変える 25 } 26 [SerializeField] 27 SelectedColorMode selectedColorMode = SelectedColorMode.None; 28 29 /// <summary>選択済みのテキスト色</summary> 30 [SerializeField] 31 Color selectedColor = new Color(0.8f,0.8f,0.8f); 32 33 34 //表示する選択肢プレハブのリスト 35 List<GameObject> PrefabList { get { return prefabList; } } 36 [SerializeField] 37 List<GameObject> prefabList; 38 39 AdvSelectionManager SelectionManager { get { return engine.SelectionManager; } } 40 41 /// <summary>選択肢のリストビュー</summary> 42 public UguiListView ListView 43 { 44 get { return listView ?? (listView = GetComponent<UguiListView>()); } 45 } 46 UguiListView listView; 47 48 49 CanvasGroup CanvasGroup 50 { 51 get 52 { 53 return canvasGroup ?? (canvasGroup = UtageToolKit.GetComponentCreateIfMissing<CanvasGroup>(this.gameObject)); 54 } 55 } 56 CanvasGroup canvasGroup; 57 58 public List<GameObject> Items { get { return items; } } 59 List<GameObject> items = new List<GameObject>(); 60 61 /// <summary>開く</summary> 62 public void Open() 63 { 64 this.gameObject.SetActive(true); 65 } 66 67 /// <summary>閉じる</summary> 68 public void Close() 69 { 70 this.gameObject.SetActive(false); 71 } 72 73 void Awake() 74 { 75 SelectionManager.OnClear.AddListener(OnClear); 76 SelectionManager.OnBeginShow.AddListener(OnBeginShow); 77 SelectionManager.OnBeginWaitInput.AddListener(OnBeginWaitInput); 78 ClearAll(); 79 } 80 81 //全てクリア 82 void ClearAll() 83 { 84 ListView.ClearItems(); 85 foreach (var item in Items) 86 { 87 UtageToolKit.SafeDestroy(item); 88 } 89 Items.Clear(); 90 } 91 92 //選択肢を作成 93 void CreateItems() 94 { 95 ClearAll(); 96 97 List<GameObject> listViewItems = new List<GameObject>(); 98 foreach( var data in SelectionManager.Selections ) 99 { 100 GameObject go = GameObject.Instantiate(GetPrefab(data)) as GameObject; 101 AdvUguiSelection selection = go.GetComponentInChildren<AdvUguiSelection>(); 102 if(selection) selection.Init(data, OnTap); 103 104 switch (selectedColorMode) 105 { 106 case SelectedColorMode.Change: 107 if (Engine.SystemSaveData.SelectionData.Check(data)) 108 { 109 go.SendMessage("OnInitSelected", selectedColor); 110 } 111 break; 112 case SelectedColorMode.None: 113 default: 114 break; 115 } 116 117 118 Items.Add(go); 119 //X,Y座標の指定がないならリストビューに追加 120 if (data.X == null || data.Y == null) 121 { 122 listViewItems.Add(go); 123 } 124 else 125 { 126 UtageToolKit.AddChild(this.transform, go, new Vector3(data.X.Value, data.Y.Value, 0)); 127 } 128 } 129 ListView.AddItems(listViewItems); 130 ListView.Reposition(); 131 } 132 133 //選択肢表示に使うプレハブを取得 134 GameObject GetPrefab( AdvSelection selectionData ) 135 { 136 GameObject prefab = null; 137 if (!string.IsNullOrEmpty(selectionData.PrefabName)) 138 { 139 //プレハブ名と一致するものを探す 140 prefab = PrefabList.Find(x => x.name == selectionData.PrefabName); 141 if (prefab != null) 142 { 143 return prefab; 144 } 145 else 146 { 147 //見つからないとき 148 Debug.LogError("Not found Selection Prefab : " + selectionData.PrefabName); 149 } 150 } 151 152 //プレハブ名の指定がなかったら、リストの一番目を 153 //旧バージョンとの互換性のためListViewから選ぶ 154 prefab = PrefabList.Count > 0 ? PrefabList[0] : ListView.ItemPrefab; 155 return prefab; 156 } 157 158 //リストビューのアイテムが作成されるときに呼ばれるコールバック 159 void CallbackCreateItem(GameObject go, int index) 160 { 161 AdvSelection data = SelectionManager.Selections[index]; 162 AdvUguiSelection selection = go.GetComponentInChildren<AdvUguiSelection>(); 163 selection.Init(data, OnTap); 164 } 165 166 //選択肢が押された 167 void OnTap(AdvUguiSelection item) 168 { 169 SelectionManager.Select(item.Data ); 170 ClearAll(); 171 } 172 173 174 //クリア 175 public void OnClear(AdvSelectionManager manager) 176 { 177 ClearAll(); 178 } 179 180 //表示開始 181 public void OnBeginShow( AdvSelectionManager manager ) 182 { 183 CreateItems(); 184 CanvasGroup.interactable = false; 185 } 186 187 //入力待ち開始 188 public void OnBeginWaitInput(AdvSelectionManager manager) 189 { 190 CanvasGroup.interactable = true; 191 } 192 } 193} 194

方向キーを押すというのは

void

1 2 if (Input.GetKeyDown("up")) { 3 transform.position = SelectionManager.transform.position; 4 } 5 6 if (Input.GetKeyDown("down")) { 7 transform.position = SelectionManager.transform.position; 8 } 9} 10 11

こんな感じで加えたのですが、何も起動せず。形としてはあっていますか?
プレハブで作られてた選択肢のコードがわからないのですが、
どういう風に書けばいいでしょうか…。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問