0

これが私のコードです:

BetBoard_Test.cs

 //Scoreboard
[SerializeField] protected GameObject prefab_big_road = null;

[SerializeField] Transform pos_big_road = null;

string jsonString = "[1, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1]"; //sample data

private void Start()
{

    ExampleClass dataParser = new ExampleClass();
    dataParser.dataToParse = jsonString;

    //Convert to Json
    string exampleClassToJson = JsonUtility.ToJson(dataParser);
    Debug.Log(exampleClassToJson);

    ExampleClass obj = JsonUtility.FromJson<ExampleClass>(exampleClassToJson);
    //Loop over it
    for (int i = 1; i < obj.dataToParse.Length - 1; i += 3)
    {
        char indivisualChar = obj.dataToParse[i];

        Debug.Log(indivisualChar);
    }

    WinLog();
}

IEnumerator WinLog_big_road()
{
    DeleteChildrens(pos_big_road);

    yield return new WaitForEndOfFrame();

    int[] array_big_road = tzPlayInfo.Instance._BIG_ROAD_;

    for (int i = 0; i < rh.Const._HISTORY_COUNT_ * rh.Const._HISTORY_HEIGHT_; i++)
    {
        if (array_big_road[i] == 0) continue;

        int x = i % rh.Const._HISTORY_COUNT_;
        int y = i / rh.Const._HISTORY_COUNT_;
        float xl = 9.0f;
        float yl = -8.0f;

        GameObject o = Instantiate(prefab_big_road) as GameObject;
        o.transform.SetParent(pos_big_road);
        o.transform.localScale = Vector3.one; //(1,1,1)

        o.transform.localPosition = new Vector3(x * xl, y * yl, 0f);
        o.GetComponent<UISprite>().spriteName = array_big_road[i] == 1 ? "layout_player_bigline-01" : "layout_banker_bigline-01";

        NGUITools.SetActive(o, true);
        yield return new WaitForEndOfFrame();
    }
    yield break;
}

    void DeleteChildrens(Transform t)
    {
        NGUITools.DestroyChildren(t);
    }

    public void WinLog()
    {
        StopCoroutine("WinLog_big_road");
        StartCoroutine("WinLog_big_road");
    }
}

[Serializable]
public class ExampleClass
{
    public string dataToParse;
}

ConstantValue.cs

public const int _HISTORY_COUNT_ = 70;
public const int _HISTORY_HEIGHT_ = 6;

PlayInfo.cs

public int[] _BIG_ROAD_ = new int[Const._HISTORY_COUNT_ * Const._HISTORY_HEIGHT_ ];

ここで達成しようとしているのは、画像を見ることです

ここに画像の説明を入力

json形式に変換されたmyjsonString="[1, 1, 2, 2, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1]";は、たとえば次のようにする必要があります

1 = blue circle
2 = red circle

ここに画像の説明を入力

写真のように、json データのすべての値を、1 と 2 に相当するスプライトでインスタンス化する必要があります。これは、この条件があります。o.GetComponent<UISprite>().spriteName = array_big_road[i] == 1 ? "layout_player_bigline-01" : "layout_banker_bigline-01";

PS: 英語が母国語ではないため、うまく説明できなかったら申し訳ありません。写真を提供しました。大変申し訳ございません。

2編集:私はこのようにしましたが、問題は、ボードに表示される唯一の赤だけが欲しいものを取得していないことです

 for (int i = 1; i < obj.dataToParse.Length - 1; i += 3)
    {
        char indivisualChar = obj.dataToParse[i];
        int j = 0;

        if(j < rh.Const._HISTORY_COUNT_ * rh.Const._HISTORY_HEIGHT_)
        {
            //lets increment it
            j++;
            //instantiate the sprite
            GameObject o = Instantiate(prefab_big_road) as GameObject;
            o.transform.SetParent(pos_big_road);
            o.transform.localScale = Vector3.one; //(1,1,1)
            int x = j % rh.Const._HISTORY_COUNT_;
            int y = j / rh.Const._HISTORY_COUNT_;
            float xl = 9.0f;
            float yl = -8.0f;
            o.transform.localPosition = new Vector3(x * xl, y * yl, 0f);
            //o.GetComponent<UISprite>().spriteName = indivisualChar == 1 ? "layout_player_bigline-01" : "layout_banker_bigline-01";
            if (indivisualChar == 1)
            {
                o.GetComponent<UISprite>().spriteName = "layout_player_bigline-01";
                NGUITools.SetActive(o, true);
            }
            else
            {
                o.GetComponent<UISprite>().spriteName = "layout_banker_bigline-01";
                NGUITools.SetActive(o, true);
            }
        }
       //Debug.Log(indivisualChar);
    }

編集済み: 詳細情報。

それはちょうど私にこれを与える

ここに画像の説明を入力

すべてのスプライトが 1 か所にあり、その 2 番目の問題は、複製されたすべてのプレハブが常に赤くなることです( 2)

ここに画像の説明を入力

4

1 に答える 1

0

インスタンス化されたすべてのゲーム プレハブがすべて赤であるという問題を解決したので、ここで行ったことは次のようなものでした。

char indivisualChar = obj.dataToParse[i];
int j = 0;

if (j < rh.Const._HISTORY_COUNT_ * rh.Const._HISTORY_HEIGHT_)
{
  //lets increment it
  j++;
  //instantiate the sprite
  GameObject o = Instantiate(prefab_big_road) as GameObject;
  o.transform.SetParent(pos_big_road);
  o.transform.localScale = Vector3.one; //(1,1,1)
  int x = j % rh.Const._HISTORY_COUNT_;
  int y = j / rh.Const._HISTORY_COUNT_;
  float xl = 2.0f;
  float yl = -22.0f;
  o.transform.localPosition = new Vector3(x * xl, y * yl, 0f);
  o.GetComponent<UISprite>().spriteName = indivisualChar == '1' ? "layout_player_bigline-01" : "layout_banker_bigline-01";
            NGUITools.SetActive(o, true);
        }

ありがとう。

于 2018-04-23T06:57:10.910 に答える