stobolewski Napisano 16 Kwiecień 2013 Napisano 16 Kwiecień 2013 Witam, jako że z unity nie jestem jakoś specjalnie obyty chciałbym was zapytać, w jaki sposób mogę za pomoca jednego kliknięcia ukryć / pokazać wiele obiektów jednocześnie. Chodzi o to, że mam salę z 300 krzesłami, które muszę wyświetlać w różnych ustawieniach. Próbowałem wcielić wszystkie krzesełka pod box, i w nim włączać / wyłączać opcje renderowania ścian, ale to działa tylko na tego boxa :/. Jeśli ktoś wie jak to zrobić, proszę o pomoc :) pozdrawiam.
arev Napisano 16 Kwiecień 2013 Napisano 16 Kwiecień 2013 Zamiast włączać/wyłączać MeshRenderera możesz dezaktywować cały obiekt (od Unity 4 dzieci dziedziczą status "Active"). Możesz jeszcze wyszukać sobie wszystkie MeshRenderery w dzieciach za pomocą gameObject.GetComponentsInChildren(), a potem pojechać po wszystkich elementach zwróconej tablicy i je wyłączyć. Aktywacja obiektu nadrzędnego będzie chyba najprostsza.
stobolewski Napisano 16 Kwiecień 2013 Autor Napisano 16 Kwiecień 2013 Wrócę do domu to będę szukał i kombinował (tak na szybko wiem tylko że mój obiekt nadrzędy to ściany sali, reszta wypozażenia to stoły, krzesła, framugi itp. :/. Ps. czy w unity jest coś takiego jak nature painter w Quest3d ? Chodzi o stworzenie wielu obiektów, które sa ... instancjami istniejącego obiektu. Problem w tym, że z tymi 300 krzesełkami scena ma 50 mb :/ To troche za dużo jak na web playera ;p. Pozdr.
arev Napisano 16 Kwiecień 2013 Napisano 16 Kwiecień 2013 Możesz zrobić jeszcze jeden obiekt nadrzędny - rodzica, który będzie trzymał tylko krzesła. Przy wrzucaniu na scenę kopii jednego modelu Unity zapisuje tylko współrzędne obiektu. Pozostałe dane istnieją tylko jako referencja do pliku źródłowego. Czy 50 MB to już wielkość builda webowego, czy wersji PC? Przy eksporcie do WebPlayera zwykle zasoby dość mocno się kompresują.
stobolewski Napisano 16 Kwiecień 2013 Autor Napisano 16 Kwiecień 2013 (edytowane) arev dzięki kurde wielkie... kompilowałem sobie exe, popaczyłem na rozmiar i zonk. Po kompilacji dla weba 2 mb xD Dzięki chłopie, bo bym tak siedział i myślał co jest nie tak xD Teraz będe "znikał" obiekty... Poradziłem sobie (wujek google pomógł) var ObjectToDeactivate = GameObject.Find("nazwaObiektuRodzica"); ObjectToDeactivate.gameObject.SetActive(false); // false grupa zniknie, true - pojawi sie (wraz z "potomkami"). Edytowane 17 Kwiecień 2013 przez stobolewski
stobolewski Napisano 18 Kwiecień 2013 Autor Napisano 18 Kwiecień 2013 No niestety, ale muszę prosić o pomoc :/. W scene unity mam: 2x GUI texture, które robią za przyciski (podpinam pod nie 2 skrypty): showKinowo function OnMouseDown () { var OTD2 = GameObject.Find("ustawieniaKinowe"); OTD2.gameObject.SetActive(true); var OTD3 = GameObject.Find("ustawieniaSzkolne"); OTD3.gameObject.SetActive(false); } oraz showSzkolnie function OnMouseDown () { var OTD2 = GameObject.Find("ustawieniaKinowe"); OTD2.gameObject.SetActive(false); var OTD3 = GameObject.Find("ustawieniaSzkolne"); OTD3.gameObject.SetActive(true); } Po uruchomieniu sceny gdy kikam ikone z podpiętym sktyptem showSzkolnie wszystko działa, w 2 przypadku nic sie nie dzieje :/. Próbowałem wywołać tę funkcję w onUpdate, ale też nic z tego nie wyszło ;p. Czy ktoś może mi coś podpowiedzieć ?
bolitic Napisano 25 Kwiecień 2013 Napisano 25 Kwiecień 2013 Hej, Przede wszytkim bardzo nie wydajnie jest to napisane - powinienes sobie referencje zcashowac podczas inicjacji. Takze lepiej wylaczac samo guiTexture. Tutaj masz jakby to moglo wygladac IMHO (C#): using UnityEngine; using System.Collections; public class ShowHideButtons : MonoBehaviour { private GUITexture _buttonKinowe; private GUITexture _buttonSzkolne; void Awake () { _buttonKinowe = GameObject.Find("ustawieniaKinowe").guiTexture; _buttonSzkolne = GameObject.Find("ustawieniaSzkolne").guiTexture; } void OnMouseDown () { _buttonKinowe.enabled = ! _buttonKinowe.enabled; _buttonSzkolne.enabled = ! _buttonSzkolne.enabled; } } Ten skrypt umiesc na buttonie, ale tylko na jednym, wowczas on bedzie wylaczal jedna teksture a wlaczal druga. Na poczatku w scenie powinna byc jedna GUITexture wylaczona a druga wlaczona, aby na zamiane sie wlaczaly. Pozdrawiam.
stobolewski Napisano 25 Kwiecień 2013 Autor Napisano 25 Kwiecień 2013 bolitic, dzięki za pomoc :) Co prawda już sobie poradziłem z problemem poprzez zamianę GUI Texture na normalne buttony. Dodałem też kilka GUI Text (tak to się chyba zwie) i klika check boxów, tak że w sumie wyszło całkiem ładne "małe" menu. Obecnie mam już tylko jeden skrypt ze zdefionowanymi "stałymi", do których podpięte są poszczególne ustawienia sal. Trochę googlowania i poszło :).
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się