Ошибка: «NullReferenceException: ссылка на объект не установлена ​​на экземпляр объекта» для 2 скриптов на одном объекте в Unity. - PullRequest
1 голос
/ 08 мая 2020

Есть вероятность, что это дубликат, но я пытался и пытался заставить это работать, и это, вероятно, что-то простое.

Я пытаюсь заставить два сценария взаимодействовать с одним объектом. Мне нужен физический скрипт basi c generi c, который будет обрабатывать все взаимодействия для всех моих объектов.

Скрипт 1:

// Simple Player1

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class Player1 : MonoBehaviour
{
    Physics physics_script;

    void Start(){
        physics_script = gameObject.GetComponent<Physics>();
    }

    // Update is called once per frame
    void Update() {
        physics_script.helloWorldFromAnotherScript();
    }
}

Скрипт 2:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Physics : MonoBehaviour
{
    void Start(){
    }

    void Update() {   
    }

    public void helloWorldFromAnotherScript()
    {
        Debug.Log("Hello world from player");
    }
}

Редактировать: Я почти уверен, что проблема здесь:

Но я не могу изменить это, чтобы спасти свою жизнь.

1 Ответ

1 голос
/ 08 мая 2020

Должно работать. Вы уверены, что в gameObject добавлены ОБЕИ скрипты? На изображении я вижу только player1, и сомневаюсь, добавлена ​​ли физика. В другом месте вы можете сделать Phys_scripts publi c или сериализовать их (с помощью [SerializeField]), и вы сможете перетащить в редакторе скрипт в поле формы. Это позволяет вам не использовать GetComponent <> при запуске. Не забудьте удалить методы запуска и обновления, если вы их не используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...