实例化的对象与控制台的输出不同。(C#统一)
正如您在控制台上的上图中所看到的,前3个输出为实例化的对象与控制台的输出不同。(C#统一),c#,android,unity3d,C#,Android,Unity3d,正如您在控制台上的上图中所看到的,前3个输出为蓝色,但我实例化的prefact上的前5个不同 都是蓝色的预制的 以下是我目前的代码: for(int col = 0; col < table.GetLength(0); col++){ GameObject p = Instantiate(prefab_bigeye_gameobject) as GameObject; p.transform.SetParent (pos_big_eye_road);
蓝色
,但我实例化的prefact上的前5个不同
都是蓝色的
预制的
以下是我目前的代码:
for(int col = 0; col < table.GetLength(0); col++){
GameObject p = Instantiate(prefab_bigeye_gameobject) as GameObject;
p.transform.SetParent (pos_big_eye_road);
p.transform.localScale = Vector3.one;
img = (RawImage)p.GetComponent<RawImage> ();
for(int row = 0; row < table.GetLength(1); row++){
if(table[moveCol, moveRow] == null){
col0 = table[colIndex1, row];
col1 = table[colIndex2, row];
if(col0 != null)
{
sum1+=1;
}
if(col1 != null)
{
sum2+=1;
}
counter++;
}
else
{
if(counter == 0){
data1 = table[firstTableCol,firstTableRow];
data2 = table[secondTableCol,secondTableRow];
data3 = table[thirdTableCol,thirdTableRow];
data4 = table[fourthTableCol,fourthTableRow];
}
else{
if(moveRow > 1){
firstTableRow++;
secondTableRow++;
thirdTableRow++;
fourthTableRow++;
}else{
firstTableCol++;
secondTableCol++;
thirdTableCol++;
fourthTableCol++;
}
data1 = table[firstTableCol,firstTableRow];
data2 = table[secondTableCol,secondTableRow];
data3 = table[thirdTableCol,thirdTableRow];
data4 = table[fourthTableCol,fourthTableRow];
}
if(data1 != null && data2 != null && data3 != null && data4 != null)
{
img.texture = NewTexture[1];
p.SetActive(true);
redcounter++;
print("RED ARE NOW AT:" + redcounter);
}
else
{
img.texture = NewTexture[0];
p.SetActive(true);
bluecounter++;
print("BLUE ARE NOW AT:" + bluecounter);
}
if(moveRow + 1 < table.GetLength(1)){
moveRow++;
}
}
}
if(sum1 == sum2)
{
img.texture = NewTexture[1];
p.SetActive(true);
redcounter++;
print("RED ARE NOW AT:" + redcounter);
}
else
{
img.texture = NewTexture[0];
p.SetActive(true);
bluecounter++;
print("BLUE ARE NOW AT:" + bluecounter);
}
//reset
sum1 = 0;
sum2 = 0;
if(colIndex1 + 1 < table.GetLength(0) && colIndex2 + 1 < table.GetLength(0))
{
colIndex1++;
colIndex2++;
}
else
{
//nothing to do
}
if(moveCol + 1 < table.GetLength(0))
{
moveCol+=1;
}
if(moveRow + 1 < table.GetLength(1)){
moveRow = 1;
}
}
for(int col=0;col1){
firstTableRow++;
secondTableRow++;
thirdTableRow++;
第四行++;
}否则{
firstTableCol++;
secondTableCol++;
thirdTableCol++;
fourthTableCol++;
}
data1=表[firstTableCol,firstTableRow];
data2=表[secondTableCol,secondTableRow];
数据3=表[thirdTableCol,thirdTableRow];
数据4=表格[fourthTableCol,fourthTableRow];
}
if(data1!=null&&data2!=null&&data3!=null&&data4!=null)
{
img.texture=NewTexture[1];
p、 SetActive(真);
redcounter++;
打印(“红色现在位于:“+redcounter”);
}
其他的
{
img.texture=NewTexture[0];
p、 SetActive(真);
bluecounter++;
打印(“蓝色现在位于:“+蓝色计数器”);
}
if(moveRow+1
预期输出必须为
蓝色,蓝色,蓝色,红色,蓝色
但在我的输出上是这样的
BLUE,BLUE,BLUE,BLUE,BLUE
我不知道为什么直接在for循环中实例化它会让它变得疯狂,所以我所做的就是通过创建一个函数来分离它们
void blueBead(){
p = Instantiate(prefab_bigeye_gameobject) as GameObject;
p.transform.SetParent (pos_big_eye_road);
p.transform.localScale = Vector3.one;
img2 = (RawImage)p.GetComponent<RawImage>();
img2.texture = NewTexture[0];
p.SetActive(true);
}
void redBead(){
p = Instantiate(prefab_bigeye_gameobject) as GameObject;
p.transform.SetParent (pos_big_eye_road);
p.transform.localScale = Vector3.one;
img2 = (RawImage)p.GetComponent<RawImage>();
img2.texture = NewTexture[1];
p.SetActive(true);
}
这些对象在编辑器中的显示顺序不一定与实例化顺序相同
if(data1 != null && data2 != null && data3 != null && data4 != null)
{
readBead();
}
else
{
blueBead();
}