// EDIT: これは「ListとLinkedListのどちらを使うべきか」と重複していません。私が下で提供した答えをチェックしてください。 適切に注文されたリスト(その場合はLinkedList)が既に作成されている場合、誰かが特定の場所にいくつかのポジションを挿入したい場合でも、LinkedListは役に立ちます。 //ランダムに生成された数値のセットを逆方向に(入力を一時停止して)繰り返す方法はありますか?
ランダムに生成された数値のセットを逆方向に(プレーヤーの入力のために一時停止して)繰り返しますか?
私はターンベースのゲームを構築しようとしています。アクションの順序は、そのような何かの結果によって決定されます
int randomPosition = Random.Range(1,31) + someModifier;
// please note that someModifier can be a negative number!
// There is no foreseeable min or max someModifier.
// Let's assume we can't set limits.
私はすでにオブジェクトの名前とそれに対応するrandomPositionを含むです。KeyValueペアのリストを持っています。 // Update:その値は、カスタムソート(Sort)関数によって既にソートされています。
// A list of KeyValue pairs containing names of objects and their corresponding randomPosition.
public List<KeyValuePair<string, int>> turnOrder = new List<KeyValuePair<string, int>>();
// GameObject names are taken from a list of player and AI GameObjects.
List <GameObject> listOfCombatants = new List<GameObjects>();
// Each GameObject name is taken from listOfCombatants list.
listOfCombatants[i].name;
多分、playerとAI GameObjectsをそれぞれのrandomPositionに等しいインデックス位置のリストに追加してみましょう。残念なことに、汎用リストには「ギャップ」はありません。だから私たちはそれを作成することはできません。
また、私はforループがプレーヤーの入力を待つのを止める方法がわかりません。私はボタンを持っていますが、これはアクションスイッチの状態を示し、いくつかの機能を実行します。
Button combat_action_button;
combat_action_button.onClick.AddListener (AttackButton);
// When player takes his turn, so in TurnState.PLAYER_ACTION:
public void AttackButton() {
switch(actionState) {
case PlayerAction.ATTACK:
Debug.Log (actionState);
// Do something here - run function, etc. Then...
currentState = TurnState.ENEMY_ACTION;
break;
}
状況を悪化させるために、whileループはパフォーマンスを良くするものではありません。それは、プレイヤーの入力をループから取り除く方が良いということです。 ループのためにさらにを作成し、最後のGameObjectが動作するまで位置から位置まで新しいループを繰り返し、いくつかのデリゲート/イベントを使用する必要があります。players/AIが行うことができるスクリプト(クラス)があります。 これはリアルタイムのプロジェクトではないため、可能な限り最大のターン時間を除いて、何時でも何かの基礎を作ることはできません。 もう1つのことは、いくつのゲームオブジェクトが交代するかわかりません。
しかし、おそらく、インデックス位置の間にギャップを持ってGameObjectsを格納し、問題なくループを繰り返すことができるコレクションタイプがありますか? できるだけシンプルにしたいと思います。
あなたのリストにギャップの問題はありえない:それぞれの "ギャップ"について - 1を使用し、リストを参照するときにLINQを使用して - 1以外のすべてのデータを照会する。 – aguertin
ランダムのリスト整数。 **あなたはそれが後方にあるとどのように言えるでしょうか?**彼らはランダムです。ランダムなコインフリップのリストは、フォワードと同様にランダムに見えます。 –
ソートされた辞書は何ですか? –