Получение компонента из другого скрипта

Программирование на Юнити.

Получение компонента из другого скрипта

Сообщение Xela 25 фев 2010, 16:23

На камере висит скрипт, который при нажатии кнопки мыши выбирает объект - таргет в сцене,
как передать этот выбранный таргет во второй скрипт(на геймобъекте)?
справку по получению компонента читал, может кто поможет с кодом или подкинет пример, спасибо=р

зы передать таргет и чтобы он стал таргетом для геймобжекта

(c#) камера

Синтаксис:
Используется csharp
using UnityEngine;

public class SmallPlayer : MonoBehaviour {

    public GameObject targetedEnemy;
   
   public void Update() {
       
     
        if (Input.GetMouseButtonDown(2))
        {
           
            Ray ray = camera.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfo;
            if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity))
            {
                if (hitInfo.collider.tag == "Enemy")
                {
                    targetedEnemy = hitInfo.collider.gameObject;

                    Debug.Log("Enemy selected:");
                }
            }
       
        }
  ....

   }
}

(c#) геймобжект
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class FIREANDROTATE : MonoBehaviour {

       
public Transform target;


public void Update () {
        if (target == null){
               
//                                              SmallPlayer sp = target.GetComponent<SmallPlayer>();


        }
        else if (target !=null) {
         }
      }
}
Последний раз редактировалось Xela 25 фев 2010, 16:28, всего редактировалось 1 раз.
Xela
UNец
 
Сообщения: 22
Зарегистрирован: 11 авг 2009, 21:48

Re: Получение компонента из другого скрипта

Сообщение Paul Siberdt 25 фев 2010, 16:28

Если вы читали справку, почему этого примера оказалось недостаточно?

Синтаксис:
Используется csharp
public class Something : MonoBehaviour
{
void Update()
{
//notice you don't need to cast here.
ScriptName sn = gameObject.GetComponent<ScriptName>();
sn.DoSomething();
sn.someVariable=5;
}
}
Последний раз редактировалось Paul Siberdt 25 фев 2010, 16:43, всего редактировалось 1 раз.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Получение компонента из другого скрипта

Сообщение Neodrop 25 фев 2010, 16:30

Рекомендую использовать тег syntax
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Получение компонента из другого скрипта

Сообщение Paul Siberdt 25 фев 2010, 16:36

Я кажный раз его ставлю, проверяю и убеждаюсь, что тэг не подцепляется :^o

Синтаксис:
Используется csharp
public class Something : MonoBehaviour
 


Обновление: о.. круть, спасиб, исправил
Последний раз редактировалось Paul Siberdt 25 фев 2010, 16:42, всего редактировалось 1 раз.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Получение компонента из другого скрипта

Сообщение Zaicheg 25 фев 2010, 16:38

Paul Siberdt писал(а):Я кажный раз его ставлю, проверяю и убеждаюсь, что тэг не подцепляется :^o
[syntax=]class[/syntax]

Дописывать язык надо. Там во всплывающей подсказке написано.
Код: Выделить всё
[syntax=csharp]class[/syntax]
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Получение компонента из другого скрипта

Сообщение Xela 25 фев 2010, 16:50

Paul Siberdt писал(а):Если вы читали справку, почему этого примера оказалось недостаточно?

недостаточно, потому что я хочу передать не метод или переменную, а GameObject и
в последствии сделать его целевым для игрового объекта в сцене, только этого у меня не получается из-за синтаксиса или недостаточности, для меня, примера.
Xela
UNец
 
Сообщения: 22
Зарегистрирован: 11 авг 2009, 21:48

Re: Получение компонента из другого скрипта

Сообщение Paul Siberdt 25 фев 2010, 16:53

а разве GameObject - не переменная?
GameObject myTarget; // передавайте ее кому угодно
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Получение компонента из другого скрипта

Сообщение Neodrop 25 фев 2010, 17:12

Боюсь, что товарищу нужно срочно пройти 3D Platform Tutorial, чтобы не выглядеть кисло с такими вопросами. :-?
Хорошо, хоть не кричит, как некоторые о "глюках дижка".
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Получение компонента из другого скрипта

Сообщение Xela 25 фев 2010, 18:00

Neodrop писал(а):Боюсь, что товарищу нужно срочно пройти 3D Platform Tutorial, чтобы не выглядеть кисло с такими вопросами. :-?

наверно пора ввести смайлик заместо данного,

ну а что такого? ни в одном из полусотни проектов, в том числе Платформере, не припомню изменение цели без прямого перетаскивания префаба или тагов (или похожих действий), хотя нет, вру, есть один, но там огромный код с массивами...
обидно застревать на таких моментах, так и не получается задать цель для объекта мышью =(
Xela
UNец
 
Сообщения: 22
Зарегистрирован: 11 авг 2009, 21:48

Re: Получение компонента из другого скрипта

Сообщение Paul Siberdt 25 фев 2010, 18:10

Что я делаю в своем жабоскрипте:

Синтаксис:
  1. ////// script_01.js 
  2.  
  3. var myTarget : GameObject; // вот тута мы под конец получим нашу цель 
  4.  
  5. function Update() { 
  6. if (myTarget) print ("TaDa!"); 
  7.  
  8. ///// script_02.js // на том же объекте 
  9.  
  10. var myTarget : GameObject; 
  11. var myScript : script_01; // для меня, в жабе - это переменная типа имя_скрипта (у вас в шарпе - мож указатель/ссылка или что там еще на класс/монобихэвиор или хрен вас там разберет) 
  12.  
  13. fuction Awake() { 
  14. myScript = gameObject.GetComponent ( script_01); 
  15.  
  16. function AnyFunction(){ 
  17. // как-то получили в этом скрипте объект-цель myTarget 
  18. myScript .myTarget = myTarget; // отправляем цель в другой скрипт 
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Получение компонента из другого скрипта

Сообщение BlackCat 28 фев 2010, 06:06

Хм, может я и ошибаюсь, но это ли случайно вам нужно?
1. Скрипт на камере, в котором что-то делается и считается:
Синтаксис:
Используется javascript
var camera2 : GameObject;
var tete : String;
function Awake()
{
name = "CamMoving"; //задаем имя камере
}
function Update ()
{
tete = tete + "\nVel: " + shipVelocity + "\nSlide Vel: " + shipSlideVelocity + "\nUpSlide Vel: " + shipUpSlideVelocity; //что-то запихиваем в <span class="posthilit">переменную</span>
}
 

Камера имет Tag "MainCamera".

2. Скрипт другого объекта, в котором вызывается скрипт камеры:
Синтаксис:
Используется javascript
public var tresh : GameObject;
function Awake ()
{
        var tresh = GameObject.FindWithTag ("MainCamera"); //получаем ссылку на объект камеры, выискивая ее по тэгу
}
function OnGUI ()
{
GUI.Window(0, Rect(10, 10, (Screen.width - 20), (Screen.height -20)), WinFunc, "База данных");
}
function WindowFunction (windowID : int)
{
        var other : CamMoving = tresh.GetComponent(CamMoving); //выковыриваем скрипт, используя заданное ему имя
        GUI.Label(Rect(5.0, 15.0, 220.0, 100.0), other.tete); //выковыриваем и используем <span class="posthilit">переменную</span> <span class="posthilit">из</span> <span class="posthilit">скрипта</span> камеры
}
 


Во втором скрипте вызывается tete из первого.

P.S. Прошу прощения за корявость скрипта и названия переменных. Не до рихтовки пока что.
BlackCat
UNец
 
Сообщения: 18
Зарегистрирован: 24 янв 2010, 21:01

Re: Получение компонента из другого скрипта

Сообщение Xela 01 мар 2010, 01:43

спасибо за пример, в принципе товарищ Пауль разъяснив все
Xela
UNец
 
Сообщения: 22
Зарегистрирован: 11 авг 2009, 21:48


Вернуться в Скрипты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13