【发布时间】:2019-09-18 08:05:18
【问题描述】:
我有相机脚本,可以随玩家移动相机。但是当玩家被Destroy(gameObject); 摧毁时 - 相机卡住了。这是因为我在列表中缺少元素。
如何忽略这个缺失的元素?
或
如何从列表中删除我被破坏的目标?
但第二个问题更难解释。 我有脚本,在这个脚本中我导入了目标列表。但是这个脚本不起作用。它不会从列表中删除目标。
// PlayerController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
public float hp1 = 7;
public float damage2 = 4;
private CamMove s1;
void Start()
{
s1 = GetComponent<CamMove>();
}
void OnCollisionEnter2D(Collision2D col)
{
if (col.gameObject.tag == "Bullet2")
{
hp1 -= damage2;
}
}
void FixedUpdate()
{
if (hp1 <= 0) // death
{
s1.targets.Remove(GameObject.FindWithTag("Player1body").transform); // trying to remove target from list
Destroy(gameObject); // then desrtoy main object
}
} // also I added tag "Player1body" in Unity to my prefab
}
【问题讨论】:
-
我们需要你的 Cam Move 脚本
-
How to remove all the null elements inside a generic list in one go? 的可能重复项或在列表中迭代的任何位置,如果您想在列表中保留空 (
null) 条目但跳过它,只需执行if(element == null) continue;即可 -
float GetGreatestDistance() { var bounds = new Bounds(targets[0].position, Vector3.zero); for (int i = 0; i < targets.Count; i++) { bounds.Encapsulate(targets[i].position); } return Mathf.Max(bounds.size.x, bounds.size.y); } -
一些cammove代码
-
@derHugo 我应该在哪里使用它,
element是什么?