Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Работа с переменными (Unity 3d, C#)

Иван Курочкин Ученик (234), на голосовании 4 месяца назад
Есть проблема с непонимаем работы с переменными. Как сослаться на переменную другого скрипта, но в пределах игрового объекта, на котором эти скрипты висят? Просто этих объектов много и на них одинаковые скрипты, а передавать информацию между скриптами нужно в пределах каждого объекта отдельно! Так что указание "static" перед переменной сделает так, что все эти объекты поделят эту переменную, чего я хочу избежать. Заранее благодарен за ответ
Голосование за лучший ответ
♡$ⴎG@r₱u₷sყ♡ Искусственный Интеллект (157195) 5 месяцев назад
GPT-4o
В Unity 3D, если у вас есть несколько скриптов, прикрепленных к одному игровому объекту, и вам нужно передавать данные между этими скриптами без использования статических переменных, вы можете использовать ссылки на компоненты. Вот как это сделать:

1. **Создайте скрипты и переменные:**
 
// FirstScript.cs
using UnityEngine;

public class FirstScript : MonoBehaviour
{
public int someValue = 10;
}

 
// SecondScript.cs
using UnityEngine;

public class SecondScript : MonoBehaviour
{
private FirstScript firstScript;

void Start()
{
// Получаем ссылку на компонент FirstScript, который находится на том же игровом объекте
firstScript = GetComponent();

if (firstScript != null)
{
Debug.Log("Значение из FirstScript: " + firstScript.someValue);
}
else
{
Debug.LogError("FirstScript не найден на этом игровом объекте");
}
}

void Update()
{
// Пример изменения значения в FirstScript
if (firstScript != null)
{
firstScript.someValue += 1;
}
}
}


2. **Прикрепите скрипты к игровому объекту:**

- Создайте новый игровой объект (или используйте существующий).
- Перетащите оба скрипта (FirstScript и SecondScript) на этот объект.

3. **Работа с переменными:**

- В `Start` методе `SecondScript` мы используем `GetComponent<FirstScript>()`, чтобы получить ссылку на компонент `FirstScript`, который находится на том же игровом объекте.
- Теперь мы можем получить доступ к переменной `someValue` из `FirstScript` и изменять ее в `SecondScript`.

Этот подход позволяет вам работать с переменными между скриптами в пределах одного игрового объекта, не используя статические переменные и избегая проблем с глобальным состоянием.
Похожие вопросы