我正在为游戏编写UI,我陷入了需要访问特定文本并为每个文本分配值的问题。 案例:不同的球队有不同的球员人数,每个球员都有不同的数据(例如力量等)。我有n个游戏对象(n视情况而定)。因此,不可能直接公开地手动引用游戏对象。一个面板有3个子面板。每个子面板都有至少3个文本元素。每个元素都需要具有不同的值。
我有一系列的游戏对象。数组中的每个游戏对象都有不同的文本元素。所以我正在尝试的是:
cards[1].playerName.text="A" , (or cards[1].playerName.text=anotherArray[1] )
cards[1].Strength.text="90";
cards[2].playerName.text="B" ,
cards[2].Strength.text="40"
我想检索它们:
if(MyTeam=="Team1")
{
int i = 0;
while(i<25 && Cards[i]!=null)
{
Cards[i].gameObject.GetComponentInChildren().text = Team1Roster[i].ToString();
Debug.Log(Cards[i].GetComponentInChildren());
i++;
}
}
在上述方法中,最上方的Text元素被选中。 如何从每个对象中选择不同的文本元素。
我也尝试过这种方式:
while(i<25 && Cards[i]!=null)
{
Cards[i].gameObject.GetComponentInChildren<Text>().text = Team1Roster[i].ToString();
var li=Cards[i].GetComponentsInChildren<Text>();
foreach (Text text in li)
{
li.text = "";
}
i++;
}
答案 0 :(得分:0)
“我有'n'个游戏对象(n视情况而定)。因此,不可能直接公开手动引用游戏对象”
这就是为什么存在预制件的原因。
创建一个名为PlayerStats的脚本,并为其提供所需的字段(“强度”,“速度”,“耐力”等)。
创建一个游戏对象。将其称为PlayerObj或类似名称。向其中添加PlayerStats组件。添加脚本所需的任何绑定(如果需要),但所有绑定都应绑定到PlayerObj(或PlayerObj本身的其他组件)下的对象
例如,在PlayerObj下创建一个StrengthText作为子对象,并将其绑定到PlayerStats.Strength
制作出PlayerObj的预制件。
创建放置在卡片中的对象时,这些对象应为instances created from the prefab
现在每个这些实例都有各自的实例的PlayerStats和 relative 绑定。
因此您可以这样做:
while(i<25 && Cards[i]!=null)
{
Cards[i].gameObject.GetComponent<PlayerStats>().Strength.text = Team1Roster[i];
i++;
}