Вторник, 16 Апреля 2024, 07:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Передача значения переменной в другой скрипт (Передача значения переменной в другой скрипт)
Передача значения переменной в другой скрипт
OneKeyДата: Воскресенье, 12 Июля 2015, 23:08 | Сообщение # 1
участник
Сейчас нет на сайте
Всем доброй ночи. Такая проблема есть, у меня есть скрипт Soots в нем по глупости своей прописал подсчет очков и настроил уже UI. И мне нужно из другого скрипта передать значение то есть в shoots есть переменная coin и в нее с друго скрипта с врага нужно передать значение( типо добавить 100 очков), после его уничтожения.
Буду очень благодарен за совет, уже 3й день думаю как сделать.



http://www.falcogames.com/SnowCrushSetup.exe
FlowДата: Воскресенье, 12 Июля 2015, 23:36 | Сообщение # 2
-=[.FSProduction.]=-
Сейчас нет на сайте
OneKey, GameObject.GetComponent<shoots>().coin;
OneKeyДата: Понедельник, 13 Июля 2015, 05:48 | Сообщение # 3
участник
Сейчас нет на сайте
Flow, Я сразу так попробовал сделать, он подсвечивает красным coin. Не знаю почему так, в Shoots coin публичная переменная.


http://www.falcogames.com/SnowCrushSetup.exe
Vip_and_RipДата: Понедельник, 13 Июля 2015, 09:50 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Если позволяет ситуация, можно попробовать назначить объект с Shoots через public в этом самом другом скрипте, и там уже проводить с ним манипуляции.

Больше никогда не буду делать игры.
OneKeyДата: Понедельник, 13 Июля 2015, 20:00 | Сообщение # 5
участник
Сейчас нет на сайте
Vip_and_Rip, чет не работает две ошибки вылазят
Assets/Scripts/bomber.cs(28,65): error CS0103: The name `points' does not exist in the current context
Assets/Scripts/bomber.cs(28,36): error CS0120: An object reference is required to access non-static member `UnityEngine.GameObject.GetComponent(System.Type)'

сделал все как ты написал. И дописал пару строк в скрипт GameObject.GetComponent<Shoot>.points = points + bomberPoints;



http://www.falcogames.com/SnowCrushSetup.exe
MANMANAДата: Понедельник, 13 Июля 2015, 22:30 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
скрипты в студию, че гадать?

Добавлено (13 июля 2015, 22:30)
---------------------------------------------
хотя бы с теми местами (и указанием методов Start, Update), где объявляются coins и откуда вызываешь GetComponent<Shoot>


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
seamanДата: Понедельник, 13 Июля 2015, 23:09 | Сообщение # 7
старожил
Сейчас нет на сайте
Цитата MANMANA ()
скрипты в студию, че гадать?

А действительно - что гадать? И так все ясно, без скриптов...
GameObject.GetComponent<Shoot> пишется не так.
Как? Почитайте мануал...
FlowДата: Понедельник, 13 Июля 2015, 23:37 | Сообщение # 8
-=[.FSProduction.]=-
Сейчас нет на сайте
seaman, а как-же тогда?
Уж-ли не GameObject.GetComponent("shoots").coin; ? x3


Сообщение отредактировал Flow - Вторник, 14 Июля 2015, 00:37
berilДата: Понедельник, 13 Июля 2015, 23:40 | Сообщение # 9
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Посмотри мое видео по GetComponent
Или это из справки
Или официальное видео по работе с GetComponent на сайте Unity.
Думаю все вопросы отпадут сами собой

Цитата Flow ()
eamanа как-же тогда?
Уж-ли не GameObject.GetComponent("shoots").coin; ? x3

Все seaman правильно говорит, он не верно написал. GameObject.GetComponent<Shoot>.points = points + bomberPoints; => gameObject.GetComponent<Shoot>().points = points + bomberPoints;

И да код в студию




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
OneKeyДата: Вторник, 14 Июля 2015, 18:14 | Сообщение # 10
участник
Сейчас нет на сайте
Спасибо, что откликнулись код внизу пока не исправлял.
Shoot:

bomber:



http://www.falcogames.com/SnowCrushSetup.exe
berilДата: Вторник, 14 Июля 2015, 18:49 | Сообщение # 11
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Если скрипты на одном GO, тогда gameObject.GetComponent<Shoot>().points = points + bomberPoints;



Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
OneKeyДата: Вторник, 14 Июля 2015, 20:04 | Сообщение # 12
участник
Сейчас нет на сайте
Они на разных ГО вот в чем, основная проблема.


http://www.falcogames.com/SnowCrushSetup.exe
berilДата: Вторник, 14 Июля 2015, 20:17 | Сообщение # 13
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата OneKey ()
Они на разных ГО вот в чем, основная проблема.

Вы ссылки, что выше давал на уроки смотрели?
Код


public GameObject go;//сюда перетаскиваем наш обьект

и потом go.GetComponent<Shoot>().points = points + bomberPoints;  




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
OneKeyДата: Вторник, 14 Июля 2015, 20:29 | Сообщение # 14
участник
Сейчас нет на сайте
Цитата beril ()
Вы ссылки, что выше давал на уроки смотрели?

извини еще нет.
Я сделал как ты написал но он все равно не работает всеравно пишет Assets/Scripts/bomber.cs(28,65): error CS0103: The name `points' does not exist in the current context.
Я прописал не много по другому SootsScr.GetComponent<Shoot>().points += bomberPoints; в таком случаи при уничтожении объекта он выдает такую ошибку NullReferenceException: Object reference not set to an instance of an object bomber.Update () (at Assets/Scripts/bomber.cs:28)



http://www.falcogames.com/SnowCrushSetup.exe
berilДата: Вторник, 14 Июля 2015, 20:45 | Сообщение # 15
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата OneKey ()
Я сделал как ты написал но он все равно не работает всеравно пишет Assets/Scripts/bomber.cs(28,65): error CS0103: The name `points' does not exist in the current context.
Я прописал не много по другому SootsScr.GetComponent<Shoot>().points += bomberPoints; в таком случаи при уничтожении объекта он выдает такую ошибку NullReferenceException: Object reference not set to an instance of an object bomber.Update () (at Assets/Scripts/bomber.cs:28)

ну само собой ) надо go.GetComponent<Shoot>().points += bomberPoints;

Уничтожение какого обьекта. Если Shoot, то само собой будет выдавать.




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
OneKeyДата: Вторник, 14 Июля 2015, 20:54 | Сообщение # 16
участник
Сейчас нет на сайте
beril, кажется я понял как сделать сейчас попробую переделать

Добавлено (14 июля 2015, 20:54)
---------------------------------------------
нет не получится, сделать как я хотел. потому, что не как не получится создать проверку условия уничтожен ли объект в Shoot.



http://www.falcogames.com/SnowCrushSetup.exe


Сообщение отредактировал OneKey - Вторник, 14 Июля 2015, 20:51
berilДата: Вторник, 14 Июля 2015, 21:39 | Сообщение # 17
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Цитата OneKey ()
нет не получится, сделать как я хотел. потому, что не как не получится создать проверку условия уничтожен ли объект в Shoot.


Код

public GameObject go;//сюда перетаскиваем наш обьект

if(go)
{
go.GetComponent<Shoot>().points += bomberPoints;   
}




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
OneKeyДата: Вторник, 14 Июля 2015, 21:56 | Сообщение # 18
участник
Сейчас нет на сайте
beril, я чет не пойму как работает это условие


http://www.falcogames.com/SnowCrushSetup.exe
MANMANAДата: Вторник, 14 Июля 2015, 23:12 | Сообщение # 19
почти ветеран
Сейчас нет на сайте
if(go) это сокращенное от if(go==true) , т.е. существует ли объект go, к скрипту которого обращаемся

Код
using UnityEngine;  
using System.Collections;  

public class bomber : MonoBehaviour {  

   public GameObject explusen;//партикл для взрыва  
   public GameObject SootsScr;  
   public float bomberSpeed = 0.05f;//скорст сомалета  
   public int enemy_Heath = 100;//жизни  
   public int bomberDamage = 20;//урон по сомалету  
   private int bomberPoints = 100;//количесво очков за збитие  
   //public AudioClip Explous;//звук взрыва  
   //public AudioClip fly_boart;  
public GameObject go;//ПЕРЕТАЩИ СВОЙ ОБЪЕКТ СО СКРИПТОМ Shoot
   // Use this for initialization  
   void Start () {  
    //GetComponent<AudioSource> ().clip = fly_boart;  
    transform.Rotate(0,90,0);  
   }  

   void Update(){  
    transform.Translate (0,0,bomberSpeed);  
    //Debug.Log (enemy_Heath);  
    if (enemy_Heath <= 0) {  
     Instantiate(explusen,transform.position,transform.rotation);  
     if(go) //добавлено
     { //добавлено
     go.GetComponent<Shoot>().points += bomberPoints;   //добавлено
     } //добавлено
Destroy(gameObject);  
     GetComponent<AudioSource>().Play();  
     enemy_Heath = 0;  
     //GameObject.GetComponent<Shoot>.points = points + bomberPoints;  

    }  
   }  

   void OnTriggerEnter(Collider othen){  
    if(othen.gameObject.CompareTag("Bullet_player")){  
     enemy_Heath -= bomberDamage;  
     Debug.Log("Попадание");  
    }  
   }  
}


p.s. othen, othen, ну давай у листьев спросим... где он май, че-то-там май


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
seamanДата: Среда, 15 Июля 2015, 01:06 | Сообщение # 20
старожил
Сейчас нет на сайте
Цитата
if(go) это сокращенное от if(go==true)

Это неверно.
Это сокращение от if(go != null)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Передача значения переменной в другой скрипт (Передача значения переменной в другой скрипт)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг