我遇到了一个2D性能问题。
我想制作一个像迪斯科舞池一样的背景,其中每个六边形部分都会连接到它所接触的6个六边形,并在它们上面发生某些情况时传输信号。六边形部分:Hexagon part
但在此之前,我必须将它们正确地放置在适当的位置。在生成它们之后,我意识到为了获得一个大背景,我必须生成成千上万的这些部分。而我的fps开始急剧下降:
每个六边形部分都使用触发器连接到周围的其他部分。我想这种连接方法可能是造成大部分问题的原因。当我检查分析器时,物理影响是最大的。
以下是六边形部分的代码:
public class HexagonPart : MonoBehaviour
{
FloorManager manager;
public GameObject spawnedFrom;
// ... (其他六个方向的HexagonPart组件和CircleCollider2D组件)
[SerializeField] PolygonCollider2D mainCollider;
// ... (其他六个方向的CircleCollider2D组件)
SpriteRenderer spriteRenderer;
private void Awake()
{
// ... (初始化代码)
}
private void Start()
{
manager.parts.Enqueue(this);
}
}
连接碰撞器(六边形周围的小圆形碰撞器)的代码:
public class HexagonCollider : MonoBehaviour
{
enum Direction { Up, LeftUp, LeftDown, Down, RightDown, RightUp }
[SerializeField] Direction direction;
private void OnTriggerEnter2D(Collider2D collision)
{
// ... (根据碰撞方向设置对应的HexagonPart组件,并禁用CircleCollider2D)
}
}
欢迎任何帮助。