[Unity 3D] Скрипт афектира всички обекти в сцената, за които е закачен
Колеги блъскам си глават с един доста "интересен" проблем. Имам 2-3 и повече обекти които се опитвам да местя с "влачене" по екрана (Android)....имам скрипт, с който правя Ray обект от позицията на кликването върху тъч скрийна, като по този начин намирам кой обект е кликнат, след което имам друга логика дали се влачи и тн., като променяма позицията му в пространството. Не това е проблема...проблема е следния....имам публична променлва в скрипта която репрезентира празен GameObject със Textmesh в него, който съдържа някаква информация като текст. Опитвам се през кода, когато е кликнат обекта да увеличавам фонта на буквите за да постигна ефект все едно се появяват и скриват когато е кликнат...и тук идва същинския проблем че се увеличава фонта не само на TextMesha който е на кликнатия обект а и на всички останали обекти, на които е закачен скрипта. Четох някъде че проблема идва от това, че се пуска по един Ray за всеки обект а който е закачен скрипта и селектирането на всички идва от там. Някой сблъсвал ли се е с този проблем и как би могъл да се разреши?
код -> https://pastebin.com/1cQCH03i
Точно такъв е проблемът какъвто предполагаш (е, +-). Скриптът се изпълнява отделно за всеки обект за който е закачен, съответно който и да кликнеш, те всичките го засичат (но само за един от тях е изпълнено target == this.gameObject) и всичките променят размера на закачения за тях текст (който е различен за всяка инстанция).
Предполагам тук е по-добре да има един общ Manager/Controller, който да прави raycast само един път (това и откъм performance е по-добре) и след като засече кликнатия обект, да му променя каквото има нужда. За по-удобно може да се закачи друг скрипт за отделните обекти и Manager-а просто да му казва какво да направи, когато засече клик/драг/нещо.
Пробвах го преди малко. Досега не съм използвал textMesh, а само UI text, и може да бъркам. Направих размера на фонта да се променя през определено време, променя се но не изчезва, въпреки, че в инспектора стойността му показва нула. Ако не се лъжа, минималната стойност за фонт е 1, може би затова не изчезва.
Само ако не е в плей режим изчезва при нула, не изчезва, става на едва забелижимо малко петно. За този ефект по-добре е да скалираш самият обект, вместо фонта. Но, ако ще е само появяване и скриване (както ти е кода в момента), а не плавна промяна, използвай активиране и деактивиране на обекта ( опс,колегата yasen.dokov ме е изпреварил :)).