assignedWeapon.Add(unAssignedWeapon[weaponNumber]);
unAssignedWeapon[weaponNumber].gameObject.SetActive(true);
unAssignedWeapon.RemoveAt(weaponNumber);
以上三行代码用来执行将特定武器从未分配列表添加到已分配列表,激活和从未分配列表移除。初次编写会有小纠结激活指令是不是应该放在第一行?然后想明白无论是哪个列表中的这件特定武器,对应的都是Hierarchy中固定的GameObject,所以在未分配列表中激活它效果是一样的。
另外,列表移除元素操作中的 .Remove 和 .RemoveAt 的区别如下:
.Remove
方法用于根据元素的值来移除集合中的元素,而.RemoveAt
方法用于根据元素的索引位置来移除集合中的元素。.Remove
方法在找不到要移除的元素时会抛出异常,而.RemoveAt
方法在索引超出范围时不会抛出异常。
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.Remove(3); // 结果为 { 1, 2, 4, 5 }
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
numbers.RemoveAt(2); // 结果为 { 1, 2, 4, 5 }