Создание префаб базы на основе значения многомерного массива (C # UNITY) - PullRequest
0 голосов
/ 27 июня 2018

Здравствуйте, ребята. Я просто хотел спросить, можно ли создать экземпляр готовой базы на основе значения вашего Multidimensional Array, например, у меня есть эти данные.

10 20 11

00 21 10

00 00 00

00 00 00

00 00 00

00 00 00

Теперь вот мой код

string road1 = "";
    for (int y = 0; y < bsb.ArrBigRoad.GetLength(0); y++)
    {
        for (int x = 0; x < bsb.ArrBigRoad.GetLength(1); x++)
        {
            road1 += string.Format("{0:D2}", bsb.ArrBigRoad[y, x] / 100);
            road1 += ".";
        }
        road1 += "\n";
    }
Debug.Log(road1);

Сейчас я печатаю его, используя Label вот так

[SerializeField] public UILabel info_scores_bigroad;

info_scores_bigroad.text = road1;

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Спасибо, Лотан, что я сделал, было что-то вроде этого

SetScore.cs

public void Set( int score )
{
    int who = score / 1000;

    if (who == 1)
    {
        NGUITools.SetActive(obj_player, true );
        NGUITools.SetActive(obj_banker, false);
    }
    else if( who == 2)
    {
        NGUITools.SetActive(obj_player, false);
        NGUITools.SetActive(obj_banker, true);
    }
    else
    {
        NGUITools.SetActive(obj_player, false);
        NGUITools.SetActive(obj_banker, false);

        NGUITools.SetActive(lbl_tie_no.gameObject, false);
        NGUITools.SetActive(spr_playerPair.gameObject, false);
        NGUITools.SetActive(spr_bankerPair.gameObject, false);
        return;
    }
}

Тогда скопируйте то, что у меня есть на моем 2d массиве, вот так

Game.cs

public IEnumerator ShowScoreBoard_BigRoad(int[,]  arrBigRoad)
{
    NGUITools.DestroyChildren(pos_bigroad);

    for (int y = 0; y < arrBigRoad.GetLength(0); y++)
    {
        for (int x = 0; x < arrBigRoad.GetLength(1); x++)
        {
            int score = arrBigRoad[y, x];

            GameObject o = Instantiate(prefab_bigroad) as GameObject;
            o.transform.SetParent(pos_bigroad);
            o.transform.localScale = Vector3.one;

            o.transform.localPosition = new Vector3(x * SX_, y* SY_, 0);
            NGUITools.SetActive(o, true);

            // 1011, 2000, 3000, 

            bsbBigRoad s = o.GetComponent<bsbBigRoad>();
            s.Set(score);
        }
    }

    yield break;
}

Но все равно спасибо. :)

0 голосов
/ 27 июня 2018

Я предлагаю вам 2 разных способа:

1.Создайте Switch / Enum с возможными префабами, которые вы можете создать, например:

//Possible Prefabs, link them on editor
public GameObject car;
public GameObject road;
public GameObject truck;

//Used to instantiate the new object
public GameObject newObject;

switch(road1){
    case 'car':
        newObject = Instantiate(car);
        break;
    case 'road':
        newObject = Instantiate(road);
        break;
    case 'truck':
        newObject = Instantiate(truck);
        break;
    default:
        print("error: prefab not exists");
        break;
}

2.Использование папки ресурсов

//Used to instantiate the new object
public GameObject newObject;

newObject = (GameObject)Instantiate(Resources.Load(road1));

Помните, что для случая 2 НУЖНО создать папку с именем Resources и найти префабы в этой папке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...