Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

ViktorDimitrov avatar ViktorDimitrov 0 Точки

[Unity 3D] Скрипт афектира всички обекти в сцената, за които е закачен

Колеги блъскам си глават с един доста "интересен" проблем. Имам 2-3 и повече обекти които се опитвам да местя с "влачене" по екрана (Android)....имам скрипт, с който правя Ray обект от позицията на кликването върху тъч скрийна, като по този начин намирам кой обект е кликнат, след което имам друга логика дали се влачи и тн., като променяма позицията му в пространството. Не това е проблема...проблема е следния....имам публична променлва в скрипта която репрезентира празен GameObject със Textmesh в него, който съдържа някаква информация като текст. Опитвам се през кода, когато е кликнат обекта да увеличавам фонта на буквите за да постигна ефект все едно се появяват и скриват когато е кликнат...и тук идва същинския проблем че се увеличава фонта не само на TextMesha който е на кликнатия обект а и на всички останали обекти, на които е закачен скрипта. Четох някъде че проблема идва от това, че се пуска по един Ray за всеки обект а който е закачен скрипта и селектирането на всички идва от там. Някой сблъсвал ли се е с този проблем и как би могъл да се разреши?

Тагове:
0
Unity 3D 11/07/2017 11:10:16
flareset avatar flareset 140 Точки
Best Answer

Трябва в кода, в който става промяната да се посочи точно този обект. Качи някъде кода, ако не си решил да е само за лично ползване.

0
ViktorDimitrov avatar ViktorDimitrov 0 Точки

код ->  https://pastebin.com/1cQCH03i

0
yasen.dokov avatar yasen.dokov 2 Точки

Точно такъв е проблемът какъвто предполагаш (е, +-). Скриптът се изпълнява отделно за всеки обект за който е закачен, съответно който и да кликнеш, те всичките го засичат (но само за един от тях е изпълнено target == this.gameObject) и всичките променят размера на закачения за тях текст (който е различен за всяка инстанция).

Предполагам тук е по-добре да има един общ Manager/Controller, който да прави raycast само един път (това и откъм performance е по-добре) и след като засече кликнатия обект, да му променя каквото има нужда. За по-удобно може да се закачи друг скрипт за отделните обекти и Manager-а просто да му казва какво да направи, когато засече клик/драг/нещо.

0
10/07/2017 19:22:49
flareset avatar flareset 140 Точки

Пробвах го преди малко. Досега не съм използвал textMesh, а само UI text, и може да бъркам. Направих размера на фонта да се променя през определено време, променя се но не изчезва, въпреки, че в инспектора стойността му показва нула. Ако не се лъжа, минималната стойност за фонт е 1, може би затова не изчезва. Само ако не е в плей режим изчезва при нула, не изчезва, става на едва забелижимо малко петно. За този ефект по-добре е да скалираш самият обект, вместо фонта. Но, ако ще е само появяване и скриване (както ти е кода в момента), а не плавна промяна, използвай активиране и деактивиране на обекта ( опс,колегата yasen.dokov ме е изпреварил :)).

0
10/07/2017 19:54:56
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.