如何使用 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();