gpt4 book ai didi

c# - 当在第二个脚本上调用时,Unity 中的静态值 "lost"

转载 作者:行者123 更新时间:2023-12-04 09:44:47 25 4
gpt4 key购买 nike

我正在尝试实现一个带有平台和 OntriggerExit 的系统,该系统产生新平台。包含触发函数的对象是所述平台的子对象。即,我在每个平台中有 4 个触发器作为子级。
我正在尝试使用触发器对象的全局位置来实例化新平台,但它会根据当前的位置继续这样做。
例如,父(平台)位于 (0,0,0)。触发器,平台的子级,全局位于 (-15,0,0)。我尝试添加 (-35,0,0) 并在 (-35,0,0) 而不是 (-50,0,0) 处实例化。
我使用静态值执行此操作。我在 OnTriggerExit() 时获取触发器位置,然后在不同的脚本上使用它,如下所示:

public class TriggerExitN : MonoBehaviour
{
public delegate void ExitAction();
public static event ExitAction OnChunkExitedN;

public static Vector3 positionN;

private bool exited = false;

private void OnTriggerExit(Collider other)
{
Player player = other.GetComponent<Player>();
if (player != null)
{
if (!exited)
{
exited = true;
OnChunkExitedN();

positionN = gameObject.transform.position;

}
}
}
}

如果我在这里调试 positionN,它会按预期返回 (-15,0,0)。

然后是平台生成器:
public class MapGenerator : MonoBehaviour
{
public GameObject[] mapprefabs;
public GameObject[] startprefabs;
private List<GameObject> platformslist = new List<GameObject>();

public Vector3 spawnOrigin;

private Vector3 spawnPosition;
// Start is called before the first frame update
void Start()
{
platformslist.Add(startprefabs[0]);
}

void OnEnable()
{
TriggerExitN.OnChunkExitedN += PickAndSpawnN;
}

private void OnDisable()
{
TriggerExitN.OnChunkExitedN -= PickAndSpawnN;
}

void PickAndSpawnN()
{
spawnPosition = TriggerExitN.positionN + new Vector3(-35f, 0, 0f);

foreach (GameObject platform in platformslist)
if(platform.transform.position == spawnPosition)
{
return;
}
else
{
continue;
}

GameObject objectFromChunk = mapprefabs[Random.Range(0, mapprefabs.Length)];

Instantiate(objectFromChunk, spawnPosition + spawnOrigin, Quaternion.identity);

platformslist.Add(objectFromChunk);

Debug.Log(TriggerExitN.positionN);
}

如果我在这里调试 poisitionN,它会返回 (0,0,0)。

我知道我错过了一些东西,我只是想要一些帮助,因为它让我发疯。
请忽略与 positionN 的值和用法无关的其余代码,因为它还没有很好地阐明。
先感谢您。

最佳答案

OnChunkExitedN();

positionN = gameObject.transform.position;

在设置 positionN 之前切换这两个你正在调用的 onchunkexitedn
positionN = gameObject.transform.position;

OnChunkExitedN();

关于c# - 当在第二个脚本上调用时,Unity 中的静态值 "lost",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62183522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com