我创建了一个由 10 个单位立方组成的对象网格系统,并将它们添加到列表中。我试图让列表中的每个对象通过它们在网格中的位置(通过变量 posX 和 posY)相互检测(topContact、leftContact、rightContact、bottomContact)。当我在运行时检查分配时,我发现具有空触点的对象,尤其是bottomContact。
我已经尝试过Mathf.Approximately,以防万一这是一个浮动问题,我已经检查并确认 gridList 是完整的并且没有重复项。在运行时,每个 gridLabel 对象上的 posX 和 posY 都会被正确识别。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GridLabel:MonoBehaviour {
Director director;
public float posX;
public float posY;
public string gridLabel;
public GridLabel topContact = null;
public GridLabel leftContact = null;
public GridLabel rightContact = null;
public GridLabel bottomContact = null;
void Awake() {
director = FindObjectOfType<Director>();
UpdateName();
PopulateContacts();
}
private void UpdateName() {
posX = (transform.position.x + 35) / 10;
posY = (transform.position.y - 10) / 10;
gridLabel = posX + "," + posY;
gameObject.name = gridLabel;
}
void PopulateContacts() {
foreach(GridLabel grid in director.gridList) {
if(Mathf.Approximately(posX,grid.posX) && Mathf.Approximately(posY,grid.posY + 1f)) {
topContact = grid;
}
else if(Mathf.Approximately(posX,grid.posX - 1f) && Mathf.Approximately(posY,grid.posY)) {
leftContact = grid;
}
else if(Mathf.Approximately(posX,grid.posX + 1f) && Mathf.Approximately(posY,grid.posY)) {
rightContact = grid;
}
else if(Mathf.Approximately(posX,grid.posX) && Mathf.Approximately(posY,grid.posY - 1f)) {
topContact = grid;
}
}
}
}
除了边框 gridLabel 对象之外,我希望所有四个接触都与相邻的 gridLabel 完成。再次,我经常发现丢失的联系人,尤其是底部联系人。
这个问题可能很简单,但我对 C# 和一般编码相对较新。提前感谢您提供的任何帮助。
慕姐8265434
凤凰求蛊
相关分类