C# 单击实例化对象并返回其编号C(UNITY)
我不知道在谷歌上搜索什么,所以我直接来到这里,对此我很抱歉。我的问题是我已经实例化了这样的对象C# 单击实例化对象并返回其编号C(UNITY),c#,unity3d,C#,Unity3d,我不知道在谷歌上搜索什么,所以我直接来到这里,对此我很抱歉。我的问题是我已经实例化了这样的对象 public void InstantiateObject(){ //the list has 5 objects in it . for (int i = 0; i < list.Count; i++) { GameObject o = Instantiate(lobby_object) as GameObject; o.transform.SetParent(pos_
public void InstantiateObject(){
//the list has 5 objects in it .
for (int i = 0; i < list.Count; i++)
{
GameObject o = Instantiate(lobby_object) as GameObject;
o.transform.SetParent(pos_lobby_object);
o.transform.localScale = Vector3.one;
o.transform.name = "spr_boards " + lobby_object_no;
o.transform.localPosition = new Vector3(0, 0, 0);
NGUITools.SetActive(o, true);
}
}
然后将此对象拖动到inspector上的按钮
现在我想点击其中一个对象并返回它们的编号
但我不知道怎么做
编辑:
更多信息
如果我点击了实例化的spr_board 1,例如,这必须记录,例如a,这是对象1
然后,如果我单击spr_board 2,例如,这必须记录,例如a,这是对象2`
我试过这个
public void InstantiateTheObject(){
Debug.Log("objects number is : " + lobby_object_no);
fromAnotherScript.InstantiateObject();
}
但问题是它总是得到我的最后一个值的最后一个值。这并不取决于我在实例化对象上单击的内容。如何从转换名称中获取编号:
RaycastHit hit;
void Update()
{
if (Input.GetMouseButtonDown (0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
GameObject ourObject = hit.collider.gameObject;
string prefix = "spr_boards ";
string txtNum = ourObject.transform.name.Remove(0, prefix.Length);
int number = Int32.Parse(txtNum);
Debug.Log ("this is object " + number);
}
}
}
int number是从1到5的数字好吧,你可以找到空格,然后从stringwell中得到后面的数字。你制作了5个相同的东西,并将它们放在彼此的顶部,所以我猜最后一个在顶部。我的列表顺序实际上是1,5,3,2,4,所以底部总是被选中的。所以它是4 always@BugFinder。那么,尽管删除了评论,你到底在挣扎什么呢?你的问题似乎是,点击你想要的东西时,你会得到一个不同的对象哇,谢谢你的程序员,这不会很抱歉的。但是谢谢你为什么不呢?这就是你从名字中得到一个数字的方法。你还需要得到这个对象吗?他们有指定的数字,先生。我已经编辑了答案-现在它还按照你的要求输出调试日志字符串
RaycastHit hit;
void Update()
{
if (Input.GetMouseButtonDown (0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
GameObject ourObject = hit.collider.gameObject;
string prefix = "spr_boards ";
string txtNum = ourObject.transform.name.Remove(0, prefix.Length);
int number = Int32.Parse(txtNum);
Debug.Log ("this is object " + number);
}
}
}