Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Unity - Přenos stringu mezi scenami

C# .NET .NET (C# a Visual Basic) Unity - Přenos stringu mezi scenami American English version English version

Aktivity (1)
Avatar
Erik Bystroň:19. dubna 14:38

Ahoj, poradil by mi někdo jak přenést string z jedné sceny do druhé, zkoušel jsem to pomocí prázdného objektu a metody DontDestroyOnLoad ale pak jsem nevěděl jak dále... Hledal jsem na internetu, ale nějak jsem nepochopil co vlastně myslí/jak to udělat... Má to soužit k přenosu jména sceny, když hráč prohraje a načte se mu game over scena a klikne na restart, abych nemusel dělat pro každý level jednu restart scenu chci to udělat přenosem jména scény, které poté dosadím při načítání/restar­tu... Za každou radu budu rád.

 
Odpovědět 19. dubna 14:38
Avatar
D0ll0k
Člen
Avatar
D0ll0k:19. dubna 20:51

DontDestroyOnLoad se používá u objektů, které chceš aby zůstaly načtené a po přesunutí do jiné scény se nesmazaly. Pokud chceš přenést jenom string nebo číslo, tak spíš použij statickou proměnnou.

Nahoru Odpovědět 19. dubna 20:51
Veni, vidi, programmato
Avatar
Erik Bystroň:20. dubna 7:13

Statickou proměnou jsem zkoušel, ale i když jsem ji dal hodnotu tak v druhém scriptu měla null hodnotu...

 
Nahoru Odpovědět 20. dubna 7:13
Avatar
D0ll0k
Člen
Avatar
D0ll0k:20. dubna 14:26

Mě to funguje. Tak to jsi ji musel špatně nadeklarovat. Jak jsi ji vytvořil a jak k ní přistupuješ?

Editováno 20. dubna 14:27
Nahoru Odpovědět 20. dubna 14:26
Veni, vidi, programmato
Avatar
Erik Bystroň:20. dubna 15:42

Vytvořil jsem ji takto:

public static string scenename;

Hodnotu jsem ji dal takto:

scenename = SceneManager.GetActiveScene().ToString();

A přitup k ní jsem zkoušel více způsoby... Podle toho co jsem našel na netu.

Editováno 20. dubna 15:42
 
Nahoru Odpovědět 20. dubna 15:42
Avatar
Tomáš Kubín:20. dubna 20:51

Ahoj, nejsem žádný expert ale zkusím pár rád.

  1. PlayerPrefs -> Uložení, uložíš a změníš kdekoli a máš k ní přístup odkudkoli
  2. Singleton, tento objekt je ve scéně pořád a nezaniká
  3. Na end game si nemyslím že je třeba nová scéna.

Udělal bych si CANVAS, do něj bych dal END GAME menu. Po prohře -> aktivuješ daný panel s End game a po kliknutí na restart resetuješ hru + zase deactivuješ panel :)

PlayerPrefs.SetString("Jmeno", hodnota);

string temp = PlayerPrefs.GetString("Jmeno");
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 20. dubna 20:51
Avatar
Erik Bystroň:21. dubna 6:44

Díky za rady, dnes to nestihnu, ale zítra to předělám a ozvu se.. :)

Editováno 21. dubna 6:45
 
Nahoru Odpovědět 21. dubna 6:44
Avatar
Erik Bystroň:22. dubna 11:55

Super, funguje jak má :-)

 
Nahoru Odpovědět 22. dubna 11:55
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.