Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zmienna z kilku skryptów


Rekomendowane odpowiedzi

Opublikowano

Załóżmy że mam sobie dwa skrypty

 

Skrypt1

 

 

using UnityEngine;
using System.Collections;

public class Skrypt1 : MonoBehaviour {

    public string Name = "Skrypt1";

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

 

 

 

 

Skrypt2

 

 

using UnityEngine;
using System.Collections;

public class Skrypt2 : MonoBehaviour {

public string Name = "Skrypt2";

    // Use this for initialization
    void Start () {
    
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}

 

 

 

I teraz w jaki sposób pobrać dane z tych dwóch skryptów w pętli. ? Nie chce ich wstawiać na sztywno deklarując np 

public Skrypt1 Skrypt1
public Skrypt2 Skrypt2

Ponieważ skryptów będzie więcej i będę chciał pobierać z nich więcej zmiennych przez co skrypt byłby rozległy. Da się te skrypty dodać do tabeli ? Chyba nie musze mówić że piszę w unity 

Opublikowano

Jeśli chodzi ci o to w jaki sposób załadować wartość zmiennej z innego skryptu, znalazłem to na answers.unity3d.com.

 

Jak OP albo ktoś inny potrzebuje a nie umie angielskiego, pisać, to postaram się przetłumaczyć.

space-core-o.gif

Opublikowano

Zawsze możesz użyć czegoś na wzór:

public static int zmiennaPierwsza = 1;
public static int zmiennaDruga = 2;
public static int zmiennaTrzecia = 3;
...
public static int zmiennaX = x;

i odwoływać się do nich za pomocą NazwaSkryptu.NazwaZmiennej = InnaZmienna;

 

Lub poprzez zapisywanie zmiennych jako PlayerPrefs.Set i wczytywaniu ich w innych skryptach poprzez Get, ale jest to mało wydajne i wygodne.

2cf6pe0.jpg


"Hmm jak by to powiedzieć... Moje pierwsze wrażenie o grupie... Nie lubię was..." - Kakashi


Opublikowano

Zawsze możesz użyć czegoś na wzór:

 

public static int zmiennaPierwsza = 1;
public static int zmiennaDruga = 2;
public static int zmiennaTrzecia = 3;
...
public static int zmiennaX = x;
i odwoływać się do nich za pomocą NazwaSkryptu.NazwaZmiennej = InnaZmienna;

 

Lub poprzez zapisywanie zmiennych jako PlayerPrefs.Set i wczytywaniu ich w innych skryptach poprzez Get, ale jest to mało wydajne i wygodne.

Właśnie chodzi o to ze to będzie coś około 10 zmiennych i pewnie tyle samo skryptów. Sczytanie tego do skryptu za pomocą pętli było by bardziej optymalne a nie mam pojęcia jak to inaczej zrobić.

Opublikowano

Ale to proste. W pierwszym skrypcie np. Skrypt 1 dajesz zmienną public static int zmienna1; i tak analogicznie do kolejnych skryptów. Potem w skrypcie, w którym chcesz odwołać się do jakieś zmiennej znajdującej się w innym skrypcie stosujesz to co napisałem NazwaSryptu.NazwaZmiennejStatic = InnaZmienna; lub na odwrót, czyli InnaZmienna = NazwaSkryptu.NazwazmiennejStatic; i dzięki temu możesz się odwołać do każdego zmiennej w tych 10 skryptach.

2cf6pe0.jpg


"Hmm jak by to powiedzieć... Moje pierwsze wrażenie o grupie... Nie lubię was..." - Kakashi


Opublikowano

1.W skrypcie w którym będą ci potrzebne wszystkie te zmienne tworzysz publiczna tablice lub liste, dołączasz skrypty do GameObject'ow i z poziomu unity edytora umieszczasz je w tej tablicy lub liscie.

2. Robisz 1 GameObjecta i dołączasz do niego wszystkie te skrypty, a w skrypcie właściwym robisz referencje do niego. 

 

3. Robisz Singletona i umieszczasz wszystkie zmienne w skrypcie z tym wzorcem i wtedy nie ma problemu.

 

4. Jeśli nie dziedziczysz po MonoBehaviour robisz zmienne referencyjne we właściwym skrypcie.

 

5. Jeśli nie dziedziczysz po MonoBehabiour robisz zmienne statyczne i odwołujesz się poprzez nazwę skryptu. 

Pewno jest jeszcze więcej możliwości.

Opublikowano

1.W skrypcie w którym będą ci potrzebne wszystkie te zmienne tworzysz publiczna tablice lub liste, dołączasz skrypty do GameObject'ow i z poziomu unity edytora umieszczasz je w tej tablicy lub liscie.

 

2. Robisz 1 GameObjecta i dołączasz do niego wszystkie te skrypty, a w skrypcie właściwym robisz referencje do niego. 

 

3. Robisz Singletona i umieszczasz wszystkie zmienne w skrypcie z tym wzorcem i wtedy nie ma problemu.

 

4. Jeśli nie dziedziczysz po MonoBehaviour robisz zmienne referencyjne we właściwym skrypcie.

 

5. Jeśli nie dziedziczysz po MonoBehabiour robisz zmienne statyczne i odwołujesz się poprzez nazwę skryptu. 

 

Pewno jest jeszcze więcej możliwości.

Mógłby mi ktoś to zrobić na takim prostym przykładzie jak podałem w temacie ? Bo gubię się przy 2 punkcie. Czyli muszę mieć w dwóch gameobjectach te wszystkie skrypty z których chce wyciągnąć zmienne ? 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...