Воскресенье, 21 Апреля 2024, 02:32

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » как найти объект (созданный скриптом)
как найти объект
andarkyДата: Пятница, 11 Ноября 2011, 18:03 | Сообщение # 1
старожил
Сейчас нет на сайте
задача такая:
в разные моменты создаются на сцене объекты (методом Instantiate, клонируя объект-заготовку с координатами 10000,1000,1000)
и потом нужно например повернуть камеру к объекту <name#1>
или объект <name#n> заставить вертеться или ещё что-либо.
Как мне искать эти создаваемые объекты?
Code

var tpla = GameObject.CreatePrimitive(PrimitiveType.Plane);


создает плоскость, но:
Code

GameObject.Find("tpla")


не может её найти, пиша:
Code
Object reference not set to an instance of an object


как мне быть??

Добавлено (11.11.2011, 18:03)
---------------------------------------------
причем, даже если тупо в аваку вписать:

Code

function Awake()
{
var tpla = GameObject.CreatePrimitive(PrimitiveType.Plane);
tpla.transform.localScale=Vector3(10,0,10);
tpla.name="tpla";
}

тоже неGameObjectFINDится...



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
noTformaTДата: Пятница, 11 Ноября 2011, 18:06 | Сообщение # 2
Ukrainian independent game developer
Сейчас нет на сайте
Quote (andarky)
var tpla = GameObject.CreatePrimitive(PrimitiveType.Plane);

tpla - уже указывает на созданный тобой "примитив плашку", но он не имеет имени smile

GameObject.Find - Finds a game object by name and returns it.

тогда лучше сделать так:

Code
var tpla = GameObject.CreatePrimitive(PrimitiveType.Plane); //создаем объект на сцене
tpla.name = "fuckingObj"; //устанавливаем для него имя


и в нужном тебе скрипте:

Code
GameObject.Find("fuckingObj")


@noTformaT
M1ghtMortalДата: Пятница, 11 Ноября 2011, 18:09 | Сообщение # 3
участник
Сейчас нет на сайте
andarky,

noTformaT уже ответил, и я к тому же забыл что объекты здесь передают ссылки. Просто учился на C++, а там ссылки и указатели нужно явно передавать.


Java/C++/Unity(C#) Programmer.
Мой блог MightMortal.RU


Сообщение отредактировал M1ghtMortal - Пятница, 11 Ноября 2011, 18:11
andarkyДата: Пятница, 11 Ноября 2011, 18:13 | Сообщение # 4
старожил
Сейчас нет на сайте
растолкуйте, это как...?
так
Code

public static var tpla=....


куда это писать?
и вообще моя задача решаема средствами JS-скриптов?



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик


Сообщение отредактировал andarky - Пятница, 11 Ноября 2011, 18:13
noTformaTДата: Пятница, 11 Ноября 2011, 18:15 | Сообщение # 5
Ukrainian independent game developer
Сейчас нет на сайте
andarky, расскажи толково где именно ты создаешь "объект плашку", и где ты ее пытаешься найти, это разные скрипты???

@noTformaT
andarkyДата: Пятница, 11 Ноября 2011, 18:34 | Сообщение # 6
старожил
Сейчас нет на сайте
это для примера плашка.
вообще будет по триггеру OnEnter()
создаваться объект с неким именем и номером (есть для этого переменная-счетчик в файле glob.js)

а потом другим триггером уничтожаются эти объекты (номер берется рандомно)



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
noTformaTДата: Пятница, 11 Ноября 2011, 18:36 | Сообщение # 7
Ukrainian independent game developer
Сейчас нет на сайте
andarky, тогда так. Ты точно ищешь объект после того как его создал???

@noTformaT
andarkyДата: Пятница, 11 Ноября 2011, 18:44 | Сообщение # 8
старожил
Сейчас нет на сайте
дело в том что это разные скрипты.
Один создает
другой убивает.

И я сам прихожу к выводу, что var thpla служит только для создания и придачи параметров,
а также имен thpla.name="newObjct"+glob.NumNum

возможно что и скрипты будут разные,
создающий скрипт будет на C# его напишет мне программист знающий C# но абсолютно не знающий Unity.
Я только допишу UNITYшные функции



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
noTformaTДата: Пятница, 11 Ноября 2011, 18:51 | Сообщение # 9
Ukrainian independent game developer
Сейчас нет на сайте
andarky, сделай так.

В скрипте, на месте где ты создаешь объект, напиши print("create Object");
а в скрипте где ты ищешь объект - print("search Object");

и посмотри что у тебя первее выводится. Как по мне, у тебя объект ищется когда он еще не создан smile


@noTformaT
andarkyДата: Пятница, 11 Ноября 2011, 19:13 | Сообщение # 10
старожил
Сейчас нет на сайте
я пробовал создавать а Аваке
а удалять по MouseDown - ругается...



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
AtomKriegДата: Пятница, 11 Ноября 2011, 20:05 | Сообщение # 11
частый гость
Сейчас нет на сайте
Quote (andarky)
задача такая:
в разные моменты создаются на сцене объекты (методом Instantiate, клонируя объект-заготовку с координатами 10000,1000,1000)


Используй префабы. http://www.youtube.com/watch?v=AYUj6kl7vBA

Quote (andarky)

и потом нужно например повернуть камеру к объекту <name#1>
или объект <name#n> заставить вертеться или ещё что-либо.
Как мне искать эти создаваемые объекты?

Вместо имени используй таги. Ты же создаешь однородные объекты.
http://unity3d.com/support/documentation/ScriptReference/GameObject.FindGameObjectsWithTag.html


Сообщение отредактировал AtomKrieg - Пятница, 11 Ноября 2011, 20:05
RipDevДата: Вторник, 15 Ноября 2011, 18:01 | Сообщение # 12
гейм-дизайнер
Сейчас нет на сайте
Знаеш, у меня тоже было нечто подобное, решалось добавлением к имени (Clone).
Тоесть если объект назвать name1, то искать надо по имени name1(clone).


Взгляни на сей изукрашенный образ, на тело, полное изъянов, составленное из частей, болезненное, исполненное многих мыслей, в которых нет ни определённости, ни постоянства.
andarkyДата: Вторник, 15 Ноября 2011, 18:21 | Сообщение # 13
старожил
Сейчас нет на сайте
RipDev,
да, это так.
а если клонированый объект клонировать а потом еще и еще то получим : name+«(clone) (clone) (clone)» и т.д. ... ужас!
а если за 256 символов перевалит?

А я вот думаю как это обойти, чтоб (clone) не прибавлялось.

Потому что у меня клоны должны также создавать свои копи при определенных условиях



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
ZizilkДата: Вторник, 15 Ноября 2011, 18:26 | Сообщение # 14
постоянный участник
Сейчас нет на сайте
Хеш функция? Вроде MD5, прогоняем через неё ту нашу строчку name+«(clone) (clone) (clone) на выходе будет результат одной длины, при том уникальный (практически, теоретически конечно может вдруг так совпасть что два набора разных дадут одинаковый хеш)

Сообщение отредактировал Zizilk - Вторник, 15 Ноября 2011, 18:27
RipDevДата: Вторник, 15 Ноября 2011, 19:17 | Сообщение # 15
гейм-дизайнер
Сейчас нет на сайте
Клонировать оригинал, и изменить с учетом нового объекта?

Взгляни на сей изукрашенный образ, на тело, полное изъянов, составленное из частей, болезненное, исполненное многих мыслей, в которых нет ни определённости, ни постоянства.
andarkyДата: Среда, 23 Ноября 2011, 10:37 | Сообщение # 16
старожил
Сейчас нет на сайте
всё!
у меня заработало!

причина была в типе gameObject
а я делал Transform

тему можно закрыть



Моя страничка по дизайну
GameDev//Design//3D
Ютубчик
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » как найти объект (созданный скриптом)
  • Страница 1 из 1
  • 1
Поиск:

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