NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: Unity - Přenos stringu mezi scenami

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Erik Bystroň:19.4.2017 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.4.2017 14:38
Avatar
D0ll0k
Člen
Avatar
D0ll0k:19.4.2017 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.4.2017 20:51
Veni, vidi, programmato
Avatar
Erik Bystroň:20.4.2017 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.4.2017 7:13
Avatar
D0ll0k
Člen
Avatar
D0ll0k:20.4.2017 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.4.2017 14:27
Nahoru Odpovědět
20.4.2017 14:26
Veni, vidi, programmato
Avatar
Erik Bystroň:20.4.2017 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.4.2017 15:42
 
Nahoru Odpovědět
20.4.2017 15:42
Avatar
Tomáš Kubín:20.4.2017 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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
20.4.2017 20:51
Avatar
Erik Bystroň:21.4.2017 6:44

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

Editováno 21.4.2017 6:45
 
Nahoru Odpovědět
21.4.2017 6:44
Avatar
Erik Bystroň:22.4.2017 11:55

Super, funguje jak má :-)

 
Nahoru Odpovědět
22.4.2017 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.