Ссылка на объект из другого скрипта

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

Re: Ссылка на объект из другого скрипта

Сообщение usports 09 июл 2020, 13:13

Woland писал(а):Что такое isPoweredOn?

Булевая переменная в скрипте InteractiveLight , который находиться на объекте с тегом onoff.
Я так понимаю должно быть что-то вроде
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Trigger2 : MonoBehaviour
{
    public GameObject[] Obj;
    private InteractiveLight lighter;
    // Start is called before the first frame update
    void Start()
    {
        Obj = GameObject.FindGameObjectsWithTag("onoff");
        lighter = GetComponent<InteractiveLight>();
    }

    // Update is called once per frame
    void Update()
    {
       
    }

    private void OnTriggerEnter(Collider other)
    {
        for (int i = 0; i <= Obj.Length - 1; i++)
        {
            Obj[i].lighter.isPoweredOn = true;
        }
    }
}
 

Но оно не работает
Только начал изучать unity и C# , если что-то называю не так или не своими именами , то сорян)
usports
UNец
 
Сообщения: 34
Зарегистрирован: 02 июл 2020, 19:13

Re: Ссылка на объект из другого скрипта

Сообщение Woland 09 июл 2020, 13:39

Ну так где ты обращаешься к скрипту InteractiveLight конкретного объекта? У тебя нет такого
Woland
Адепт
 
Сообщения: 1240
Зарегистрирован: 20 апр 2013, 18:09
  • Сайт

Re: Ссылка на объект из другого скрипта

Сообщение usports 09 июл 2020, 13:52

Woland писал(а):Ну так где ты обращаешься к скрипту InteractiveLight конкретного объекта? У тебя нет такого

Это разве не обращение ?

Синтаксис:
Используется csharp
   private InteractiveLight lighter;


lighter = GetComponent<InteractiveLight>();

Obj[i].lighter.isPoweredOn = true;
 


Как тогда должно быть?
Только начал изучать unity и C# , если что-то называю не так или не своими именами , то сорян)
usports
UNец
 
Сообщения: 34
Зарегистрирован: 02 июл 2020, 19:13

Re: Ссылка на объект из другого скрипта

Сообщение Woland 09 июл 2020, 13:53

Вообще нет.
Obj[i].GetComponent<SomeComponent>().field="ASdad";
Woland
Адепт
 
Сообщения: 1240
Зарегистрирован: 20 апр 2013, 18:09
  • Сайт

Re: Ссылка на объект из другого скрипта

Сообщение usports 09 июл 2020, 14:12

Woland писал(а):Вообще нет.
Obj[i].GetComponent<SomeComponent>().field="ASdad";


Спасибо , всё отлично работает.

Только не пойму почему
если
Синтаксис:
Используется csharp
Obj[i].GetComponent<InteractiveLight>().isPoweredOn = true;

Переделать в

Синтаксис:
Используется csharp
private InteractiveLight lighter;

Синтаксис:
Используется csharp
    void Start()
    {
        lighter = GetComponent<InteractiveLight>();
    }

Синтаксис:
Используется csharp
Obj[i].lighter.isPoweredOn = true;

Это так не работает. lighter равен же GetComponent<InteractiveLight>.
Только начал изучать unity и C# , если что-то называю не так или не своими именами , то сорян)
usports
UNец
 
Сообщения: 34
Зарегистрирован: 02 июл 2020, 19:13

Re: Ссылка на объект из другого скрипта

Сообщение Woland 09 июл 2020, 14:24

lighter - ссылка на компонент InteractiveLight текущего объекта, откуда ты скрипт делаешь. (код GetComponent<InteractiveLight> - получение компонента текущего объекта).
Тебе же нужна ссылка на компонент каждого отдельного объекта, поэтому получать их надо отдельно.
Woland
Адепт
 
Сообщения: 1240
Зарегистрирован: 20 апр 2013, 18:09
  • Сайт

Re: Ссылка на объект из другого скрипта

Сообщение usports 09 июл 2020, 19:11

Woland писал(а):lighter - ссылка на компонент InteractiveLight текущего объекта, откуда ты скрипт делаешь. (код GetComponent<InteractiveLight> - получение компонента текущего объекта).
Тебе же нужна ссылка на компонент каждого отдельного объекта, поэтому получать их надо отдельно.

Многое начинаю понимать.

Вот допустим у меня помимо параметра isPoweredOn есть параметр Switch On (который делает звук зажигания лампы)
Изображение

Я так понимаю что бы его использовать , нужно просто к
Obj[i].GetComponent<InteractiveLight>().isPoweredOn = true;
Добавить

Синтаксис:
Используется csharp
Obj[i].GetComponent<InteractiveLight>().isPoweredOn = true;
Obj[i].GetComponent<InteractiveLight>().SwitchOn <- но дальше не пойму что нужно написать. Это же не bool переменная что бы true или false делать. Да и не нашел параметров типо Play и тд из того что предлагает программа
Только начал изучать unity и C# , если что-то называю не так или не своими именами , то сорян)
usports
UNец
 
Сообщения: 34
Зарегистрирован: 02 июл 2020, 19:13

Re: Ссылка на объект из другого скрипта

Сообщение Woland 09 июл 2020, 20:20

Для проигрывания звука есть отдельный встроенный объект AudioSource
https://docs.unity3d.com/ScriptReferenc ... ource.html
https://docs.unity3d.com/ScriptReferenc ... -clip.html

Делаешь AudioSource, на него вешаешь скрипт, который принимает нужный тебе аудио клип и воспроизводит его.
Woland
Адепт
 
Сообщения: 1240
Зарегистрирован: 20 апр 2013, 18:09
  • Сайт

Пред.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 27