Как управлять переменной между скриптами в Unity и получать к ней доступC#

Место общения программистов C#
Ответить
Anonymous
 Как управлять переменной между скриптами в Unity и получать к ней доступ

Сообщение Anonymous »

Итак, у меня есть скрипты в Unity. В одной основной находится большинство функций и переменных, а во второй я просто управляю некоторыми диалогами. Что я хочу сделать, так это то, что у меня есть объявленное логическое значение под названием "clicked" в скрипте ClickManager

Код: Выделить всё

using UnityEditor.PackageManager;
using UnityEngine;

public class ClickManager : MonoBehaviour
{
public bool clicked{ get; set; }

public void Start()
{
clicked = false;
}
Теперь я хочу, чтобы после щелчка по объекту для него было установлено значение true, и это работает. Но во втором скрипте у меня также есть доступ к первому скрипту, например, ClickManager clickManager; У меня также есть функция обновления, чтобы проверить статус, если это не так:

Код: Выделить всё

void Update()
{
**Debug.Log(clickManager.clicked);**
if(clickManager.clicked)
{
StartDialogue();
//clickManager.clickManager.clicked = false;
}
}
Теперь проблема возникает в строке с Debug.Log, поскольку он возвращает следующую ошибку

Код: Выделить всё

NullReferenceException: Object reference not set to an instance of an object
Dialogue.Update () (at Assets/Dialogue.cs:27)
Исходя из моих знаний и здравого смысла программирования, я предполагаю, что проблема в том, что второй скрипт не может получить доступ к логическому значению из первого скрипта.
Пытался объявить переменную во втором скрипте и доступ к ней через первый. Та же проблема. Также попробовал использовать эту функцию clickManager = GetComponent(); в функции Start(), без изменений.
Попробовал также такую ​​функцию get:

Код: Выделить всё

private bool getClicked()
{
return clickManager.clicked;
}
Какой год ничего не сделал

Подробнее здесь: https://stackoverflow.com/questions/793 ... s-in-unity
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»