假设我有一个Robot类列表[List<机器人> myList = new List<机器人>()]。每个机器人都有一个名称和ID,具体取决于其颜色。现在,从列表中随机选择值,并输出列表中每种颜色的机器人数量。 (N.B.认为你只有3个彩色机器人[黄色,绿色,红色])
我的代码:
Private Sub OpenPPPres_LB_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Long
For i = 0 To OpenPPPres_LB.ListCount - 1
If OpenPPPres_LB.Selected(i) Then
PPTFileName = OpenPPPres_LB.List(i) ' <-- save the PPT filename
Exit For
End If
Next i
Unload UserForm1
End Sub
但这可能不起作用..实际上我不明白我的输出是什么......
答案 0 :(得分:3)
您的随机选择正常(即使您的代码有点令人困惑)。我想你的问题是,你不理解Debug.Log(robot);
的输出。
实际上我不明白我的输出是什么...... - OP
Debug.Log()
打印什么?根据Unity3D Documentation for this function将给定对象转换为字符串表示以供显示。这意味着只会打印对象上ToString()
方法的返回值。
让我们看一下Object.ToString()
方法及其在MSDN Documentatio n中的行为。
Object.ToString方法的默认实现返回对象类型的完全限定名称。 - MSDN
因此,Unity日志中的输出将是对象的类型定义。
只需将ToString()
类的默认Robot
方法覆盖为以下内容:
public class Robot
{
public string name;
public int id;
public Robot(string name, int id)
{
this.name = name;
this.id = id;
}
// Here start's the magic!
public override string ToString()
{
return string.Format("Robot -> Id:'{0}' Name:'{1}'", id, name);
}
}
答案 1 :(得分:3)
不确定是否真正了解您所要求的内容:如果只是关于Debug.Log(robot);
输出的含义,请检查@Smartis答案,因为它完美地回答:)
否则,我觉得您希望使用随机选择的名称填充List<Robot>
。在这种情况下,您需要使用循环:Start()
方法仅在启动时调用一次(顾名思义)。如果您需要使用随机选择的颜色/名称填充列表,然后显示列表中每种颜色/名称的数量,您可以按照以下步骤进行操作:
public class Test : MonoBehaviour
{
private void Start()
{
List<Robot> robotsList = new List<Robot>();
List<string> namesList = new List<string>();
namesList.Add("yellow");
namesList.Add("green");
namesList.Add("red");
PopulateRobotsList();
DisplayRobotsListContent();
}
private void PopulateRobotsList()
{
for(int id = 0; id < 100; id++)
{
string robotName = namesList[Random.Range(0, namesList.Count)];
robotsList.Add(new Robot(robotName, id));
//Debug.Log(robotsList[robotsList.Count - 1]);
}
}
private void DisplayRobotsListContent()
{
int[] robotsNamesCount = new int[namesList.Count];
for (int i = 0; i < robotsList.Count; i++)
{
robotsNamesCount[namesList.IndexOf(robotsList[i].name)] += 1;
}
for (int i = 0; i < namesList.Count; i++)
{
Debug.Log("Robot(s) named \"" + namesList[i] + "\" : " + robotsNamesCount[i]);
}
}
}
public class Robot
{
public string name;
public int id;
public Robot(string name, int id)
{
this.name = name;
this.id = id;
}
}
请注意我更改了一些变量名称,因为我发现很难理解你提供的名称(例如:robotsList
存储机器人的潜在颜色/名称是一个奇怪的名称选择:))
希望这有帮助,