gpt4 book ai didi

c# - 实例化预制件返回 NullReferenceException 错误

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:46 26 4
gpt4 key购买 nike

我正在使用 namespace 在我的游戏中实例化一个 prefab 但是 unity 认为 prefab 不是 GameObject 并返回 NullReferenceException 错误

我已经在包含脚本的游戏对象中正确链接了预制件。这是我目前在 Visual Studio 中的代码,但我也尝试了各种形式的代码,它们是第一行代码之后的代码

public GameObject Prefab;
public void OnAppear(){
GameObject spawn = Instantiate(Prefab, Spawnpoint.position, Spawnpoint.rotation);
spawn.transform.parent = Spawnpoint.transform;}

V1 var spawn = Instantiate(Prefab, Spawnpoint.position, Spawnpoint.rotation);

V2 var spawn = Instantiate(Prefab, Spawnpoint.position, Spawnpoint.rotation) as GameObject;

整个脚本:

namespace AugReal
{
public class StartAll : MonoBehaviour
{
public Transform Spawnpoint;
public GameObject Prefab;

public void OnAppear()
{
GameObject spawn = Instantiate(Prefab, Spawnpoint.position, Spawnpoint.rotation);
spawn.transform.parent = Spawnpoint.transform;
}

public void OnDisappear()
{
Debug.Log("You lose");
}
}
}

检查员:

enter image description here

最佳答案

试试下面的代码:

  1. 您不需要创建对此脚本附加到的转换的公共(public)引用。由于脚本是单一行为,您可以通过 this.transform
  2. 直接访问它
  3. 与其在实例化后显式设置父级,不如考虑使用具有父级覆盖的 Instantiate 方法。

(我还更改了您的属性“Prefab”的大小写。它不会影响代码,但标准是保留属性名称 camelCase 以将它们与 PascalCased 类类型区分开来。)

namespace AugReal
{
public class StartAll : MonoBehaviour
{
public GameObject prefab;

public void OnAppear()
{
GameObject spawn = Instantiate(prefab, this.transform);
}

public void OnDisappear()
{
Debug.Log("You lose");
}
}
}

关于c# - 实例化预制件返回 NullReferenceException 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58136464/

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