NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Mezinárodní den IT společnosti je tady! Pouze nyní můžeš získat 90 % extra kreditů při nákupu od 1199 kreditů s promo kódem AJTACI90. Tak neváhej!

Diskuze – Lekce 5 - Rozdělení MonoGame hry do komponent

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Mini
matesax:8.12.2012 18:13

Načti ty textury do pole a měň indexem...

 
Odpovědět
8.12.2012 18:13
Avatar
Mini
Člen
Avatar
Mini:8.12.2012 18:23

asi to špatne vysvětluji.
LoadContent()
{
mrak = hra.Content.Lo­ad<Texture2D>(@"o­brazky\mrak");
base.LoadContent();
}
zapnu načte se mrak.
Když ale udělám místo té cesty k textuře mraku, např (@"obrazky\co­koliv");
Tak se poté zase vykreslí mrak. A zkoušel sem odkazovat na věc která neexistuje např nějaký blábol a stejně to šlo a zase se vykreslil mrak.

Odpovědět
8.12.2012 18:23
Jste dobří jen v tom, co vás baví.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Mini
matesax:8.12.2012 18:33

Po kolikáté? LoadContent se provede jen jednou... Je to načtení... Načti všechny obrázky do proměnných a popř. ty, mezi kterýma budeš přepínat do pole. Přepínat pak budeš moci snadno int proměnnou.

private int index = 0;
private Textrue2D[] frames = new Texture2D[size];

... Load(...)
{

     frames[0] = hra.Content.Load<Texture2D>(@"obrazky\mrak" -> musí být přidán v Content);
     frames[1] = hra.Content.Load<Texture2D>(@"obrazky\xxx" -> musí být přidán v Content);

...Update(..)

if (ma se prepnout)
     index++;

...Draw(...)

xxx.Draw(frames[index], ...);
Editováno 8.12.2012 18:34
 
Odpovědět
8.12.2012 18:33
Avatar
matesax
Tvůrce
Avatar
Odpovídá na matesax
matesax:8.12.2012 18:38

Jestli načítáš v komponentce používej Game - to nikam není třeba ukládat - to už je samotné vlastnost... (nechápu původ proměnné hra - jestli je to jen tak, či co...)

 
Odpovědět
8.12.2012 18:38
Avatar
Mini
Člen
Avatar
Mini:8.12.2012 18:46

Mam třídu Hra kde volam všechny komponenty.
Mylsis ze je problem v tom?

private Hra hra;
private Texture2D Zem;
public Zem(Hra hra)
: base(hra)
{

}
Misto té moji Hry mam dat Game jo?

Editováno 8.12.2012 18:49
Odpovědět
8.12.2012 18:46
Jste dobří jen v tom, co vás baví.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Mini
matesax:8.12.2012 19:02

Místo hra má být hlavně game... (To je hlavní třída - ty z ní dědíš.) Ne - to s tím nesouvisí - nesnáším Češtinu v kódu - a mám na mysli to, že komponentka má vlastnost Game - od ní se dostaneš k nadřazené třídě Game - takže v komponentce načítáš Game.xxx a v hlavní třídě Game rovnou - popř. s this, tak nechápu, kde bereš tu proměnnou hra... Ale jak jsem psal - LoadContent je volán jednou - z konstruktoru - viz. object browser - takže tam načítáš všechny obrázky - najednou - ne uprostřed hry...

Editováno 8.12.2012 19:03
 
Odpovědět
8.12.2012 19:02
Avatar
Mini
Člen
Avatar
Mini:8.12.2012 19:12

Takže mam všechny textury načíct hned v té mé tříde Game (kde volam komponenty) a potom už jen volat načtenou texturu? Chapu to dobře?

Odpovědět
8.12.2012 19:12
Jste dobří jen v tom, co vás baví.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Mini
matesax:8.12.2012 19:26

Je jedno jestli to načteš z komponentky, či přímo z Game - tak jako tak se to provádí v Game.Load. A ano - vše načítáš v load - pak to jen voláš. Proto když chceš udělat pás obrázků, mezi kterýma chceš měnit, udělej pole - viz. má ukázka...

 
Odpovědět
8.12.2012 19:26
Avatar
United121CZ
Člen
Avatar
United121CZ:26.8.2013 22:48

Nedaří se mi jakýmkoliv způsobem zavolat "spritebatch"(v Draw) v komponentě zkoušel jsem snad vše ( game. , Game. , Hra. , hra. )nic z toho nemá v nabídce spriteBatch a to jsem dělal vše podle toho co tady je napsaný ... nevíte kde může být problém ?

 
Odpovědět
26.8.2013 22:48
Avatar
abushrek
Člen
Avatar
abushrek:11.6.2015 21:08

Zdarec chtěl bych se zeptat, kde patří:
Components.Ad­d(mraky);
Components.Ad­d(level);
Zkoušel jsem to dat do do všech metod, ale padá mi to na vyjímku ArgumentException.

Edit: Tak už mi to jde moje blbá chyba...(chybama se člověk učí) :)

Editováno 11.6.2015 21:09
 
Odpovědět
11.6.2015 21:08
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 10 zpráv z 35.