由于我的思考能力不強,我遇到了一個難題。在開發基于卡片的系統時,我試圖為每張卡片分配一個整數,該整數可用于堆疊套牌,而不是每次抽牌時隨機制作一張卡片。問題是,我不知道如何在每次開始時為卡片分配一個亂數。我想出了一個......我會說......過于復雜的設計,我把它留在了下面。如果有人愿意為我指明正確的方向,我將如何去做,我將不勝感激。抱歉,這是一項更...復雜的任務,但我到處尋找解決方案,但找不到。也許我想多了。誰知道。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class DeckOrder : MonoBehaviour
{
//too many objects, maybe a way to simplify this process
public GameObject card1;
public GameObject card2;
public GameObject card3;
public GameObject card4;
public GameObject card5;
public GameObject card6;
public GameObject card7;
public GameObject card8;
public GameObject card9;
public GameObject card10;
public GameObject card11;
public GameObject card12;
public GameObject card13;
public GameObject card14;
public GameObject card15;
int randomNumber1;
int randomNumber2;
int randomNumber3;
int randomNumber4;
int randomNumber5;
int randomNumber6;
int randomNumber7;
int randomNumber8;
int randomNumber9;
int randomNumber10;
int randomNumber11;
int randomNumber12;
int randomNumber13;
int randomNumber14;
int randomNumber15;
void Start()
{
//set card order
randomNumber1 = Random.Range(1, 15);
//beneath each would be a code telling it not to repeat that number it chose for the rest of these
randomNumber2 = Random.Range(1, 15);
randomNumber3 = Random.Range(1, 15);
randomNumber4 = Random.Range(1, 15);
randomNumber5 = Random.Range(1, 15);
randomNumber6 = Random.Range(1, 15);
randomNumber7 = Random.Range(1, 15);
randomNumber8 = Random.Range(1, 15);
randomNumber9 = Random.Range(1, 15);
randomNumber10 = Random.Range(1, 15);
randomNumber11 = Random.Range(1, 15);
randomNumber12 = Random.Range(1, 15);
randomNumber13 = Random.Range(1, 15);
randomNumber14 = Random.Range(1, 15);
randomNumber15 = Random.Range(1, 15);
//this doesnt work, GameObject can't be converted to int or vise versa
card1 = randomNumber1;
card2 = randomNumber2;
card3 = randomNumber3;
card4 = randomNumber4;
card5 = randomNumber5;
card6 = randomNumber6;
card7 = randomNumber7;
card8 = randomNumber8;
card9 = randomNumber9;
card10 = randomNumber10;
card11 = randomNumber11;
card12 = randomNumber12;
card13 = randomNumber13;
card14 = randomNumber14;
card15 = randomNumber15
}
}
uj5u.com熱心網友回復:
你真的應該使用一個陣列,然后你可以使用 Linq 每次都簡單地洗牌,例如
using System.Linq;
using UnityEngine;
public class DeckOrder : MonoBehaviour
{
public GameObject[] availableCards;
public GameObject[] deck;
private void Start ()
{
deck = availableCards.OrderBy(c => Random.value).ToArray();
}
}
現在只需將所有卡片拖到陣列的名稱上availableCards-> 它們都將被添加到 Inspector 中的陣列中。
然后在每次開始時,deck將按隨機順序填寫。
uj5u.com熱心網友回復:
最開始,每個進入這個領域的人,一開始都像你一樣寫代碼,這不是錯誤,而是錯誤在于你停留在這個低水平
至于你的問題,不是很清楚,但我會給你基礎知識,這樣你就可以修復你的代碼
如果您有多個具有不同值的變數,則應使用List 在這里您將找到一個說明如何使用串列以及在何處使用它的教程
這是一個簡單的串列示例
[System.Serializable]
public struct Informaiton
{
public string name;
public int age;
public int number;
}
public List<Informaiton> MyInformaiton = new List<Informaiton>();
public void Start()
{
Informaiton _informaiton_ = new Informaiton();
_informaiton_.name = "lelouch";
_informaiton_.age = 17;
_informaiton_.number = 1245836985;
MyInformaiton.Add(_informaiton_);
}
我建議您撰寫此代碼并嘗試向其中添加內容并從中洗掉內容以適應串列更多
不要放棄第一次嘗試,沒有什么是容易的
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/432326.html
上一篇:有沒有人可以幫忙顯示時間
