如何使用 C# 在 Unity 中引用对象?
How to reference an Object in Unity with C#?
嗨伙计们
我在以下代码的 Unity 中收到错误 CS0120:
Error CS0120: An object reference is required for the non-static
field, method, or property 'PortalScript.Spawn()'
脚本 1: 在这里,我尝试在与玩家有一定距离的屏幕上创建一个新的 GameObject
。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class PortalScript : MonoBehaviour
{
public GameObject Portal; // referenced at Inspector
GameObject Player = GameObject.Find("Player");
public void Spawn()
{
bool portalSpawned = false;
while (!portalSpawned)
{
Vector3 portalPosition = new Vector3(Random.Range(-7f, 7f), Random.Range(-4f, 4f), 0f);
if((portalPosition - Player.transform.position).magnitude < 3)
{
continue;
}
else
{
// Instantiate at position.
Instantiate(Portal, portalPosition, Quaternion.identity);
portalSpawned = true;
}
}
}
}
脚本 2: 这个脚本在播放器上。在案例中,它应该从脚本 1
调用方法 Spawn
public class Point : MonoBehaviour
{
public PortalScript Spawn;
void Update()
{
score = updateScore;
switch (score)
{
case 1:
PortalScript.Spawn(); // ERROR at this line
break;
}
}
如果我将脚本 1 中的代码直接写入脚本 2,它就可以工作。
我的大脑停在了那个点上。感谢您的帮助,如果您需要更多信息,请告诉我。
替换此行:
PortalScript.Spawn(); // ERROR at this line
有了这个:
Spawn.Spawn();
嗨伙计们 我在以下代码的 Unity 中收到错误 CS0120:
Error CS0120: An object reference is required for the non-static field, method, or property 'PortalScript.Spawn()'
脚本 1: 在这里,我尝试在与玩家有一定距离的屏幕上创建一个新的 GameObject
。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class PortalScript : MonoBehaviour
{
public GameObject Portal; // referenced at Inspector
GameObject Player = GameObject.Find("Player");
public void Spawn()
{
bool portalSpawned = false;
while (!portalSpawned)
{
Vector3 portalPosition = new Vector3(Random.Range(-7f, 7f), Random.Range(-4f, 4f), 0f);
if((portalPosition - Player.transform.position).magnitude < 3)
{
continue;
}
else
{
// Instantiate at position.
Instantiate(Portal, portalPosition, Quaternion.identity);
portalSpawned = true;
}
}
}
}
脚本 2: 这个脚本在播放器上。在案例中,它应该从脚本 1
调用方法 Spawnpublic class Point : MonoBehaviour
{
public PortalScript Spawn;
void Update()
{
score = updateScore;
switch (score)
{
case 1:
PortalScript.Spawn(); // ERROR at this line
break;
}
}
如果我将脚本 1 中的代码直接写入脚本 2,它就可以工作。
我的大脑停在了那个点上。感谢您的帮助,如果您需要更多信息,请告诉我。
替换此行:
PortalScript.Spawn(); // ERROR at this line
有了这个:
Spawn.Spawn();