Как ссылаться на Объект в Unity с C#? - PullRequest
0 голосов
/ 08 марта 2020

Hy, ребята, я получаю сообщение об ошибке CS0120 в Unity со следующим кодом:

Ошибка CS0120: ссылка на объект требуется для нестатического поля, метода, или свойство '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: Этот сценарий находится на проигрывателе. В случае, если он должен вызвать метод Spawn из сценария 1

public class Point : MonoBehaviour
{    

public PortalScript Spawn; 

    void Update()
        {
            score = updateScore;

            switch (score) 
            {
                case 1:
                    PortalScript.Spawn(); // ERROR at this line
                    break;
            }
}

Если я напишу код из сценария 1 непосредственно в сценарий 2, это сработает.

Мой мозг останавливается в этой точке. Спасибо за вашу помощь и дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 08 марта 2020

Заменить эту строку:

PortalScript.Spawn(); // ERROR at this line

на эту:

Spawn.Spawn();
...