C# 如何使用按钮单击并传递值从列表中删除值?

C# 如何使用按钮单击并传递值从列表中删除值?,c#,unity3d,C#,Unity3d,该值达到以下方法,并实例化以下模型。将模型信息添加到不同的列表ir modelid、modelrefno和modelname public void AddPath() { key = 0; } public void AddModel() { key = 1; } public void AddNewmodel() { key = 2; } 现在,当我使用“删除”按钮删除时,将使用以下方法。在这里,我希望继续删除上次保留的模型信息。如果我两次单击“删除”,则上次保留的两个

该值达到以下方法,并实例化以下模型。将模型信息添加到不同的列表ir modelid、modelrefno和modelname

public void AddPath()

{

key = 0;

}

public void AddModel()

{

key = 1;

}
public void AddNewmodel()

{

key = 2;

}
现在,当我使用“删除”按钮删除时,将使用以下方法。在这里,我希望继续删除上次保留的模型信息。如果我两次单击“删除”,则上次保留的两个模型信息将被删除。当我添加单个模型并删除时,因此,它将删除,但如果我添加多个模型,则键值将是最后添加的模型。因此,当我尝试删除信息时,该信息仍将存在。如何从列表中删除多个保留信息

public GameObject Listadd(ModelInfo info)


{


    key = info.shapeType;

if (key == 0)
        {

            touchescount0 = touchescount0 + 1;


            shape = Instantiate(models[key], new Vector3(info.px, info.py, info.pz), Quaternion.Euler(info.qx, info.qy, info.qz));


            modelid.Add(0);
            modelrefno.Add(touchescount0);
            shape.name = "Path" + " " + touchescount0;
            modelname.Add(shape.name);
            Debug.Log("Model Details " + modelid[0] + "-" + modelrefno[0] + "-" + modelname[0]);



        }
        else if (key == 1)
        {

            touchescount1 = touchescount1 + 1;

            GameObject objs = Instantiate(models[key], new Vector3(info.px, info.py, info.pz), Quaternion.Euler(info.qx, info.qy, info.qz));
            shape = objs;


            modelid.Add(1);
            modelrefno.Add(touchescount1);

            shape.name = "SBlue" + " " + touchescount1;
            modelname.Add(shape.name);


        }



else if (key == 2)
            {

            touchescount2 = touchescount2 + 1;

            GameObject objs = Instantiate(models[key], new Vector3(info.px, info.py, info.pz), Quaternion.Euler(info.qx, info.qy, info.qz));
            shape = objs;


            modelid.Add(1);
            modelrefno.Add(touchescount2);

            shape.name = "SBlue" + " " + touchescount2;
            modelname.Add(shape.name);


        }


}

    }
你可以用。很简单

如果要在顶部添加内容,只需使用:

 public void DeleteShapes()
    {
            if (key == 0 && touchescount0 > 0)
            {
                touchescount0 = touchescount0 - 1;
            }
            if (key == 1 && touchescount1 > 0)
            {
                touchescount1 = touchescount1 - 1;
                Debug.Log("While Deleting SMblue = " + touchescount1);
            }

            if (key == 2 && touchescount2 > 0)
            {
                touchescount2 = touchescount2 - 1;

            }
            if(modelid.Count>0)
            {
                modelid.RemoveAt(modelid.Count - 1);

            }

            if (modelrefno.Count > 0)
            {
                modelrefno.RemoveAt(modelrefno.Count - 1);
            }

            if (modelname.Count > 0)
            {

                modelname.RemoveAt(modelname.Count - 1);
            }
            //Debug.Log("Model Details " + modelid[0] + "-" + modelrefno[0] + "-" + modelname[0]);


        }
要从堆栈顶部移除某些内容,请执行以下操作:

myStack.Push(myobject);

它也快了很多,所以。。。没有缺点。

也许你应该尝试使用
堆栈
@Morasiu谢谢..效果很好。。。作为回答,你有三个包含相关数据的列表。您应该创建一个包含这些数据片段的自定义类,并有一个列表。
myStack.Push(myobject);
myStack.Pop();