Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 5. diel - Rozdelenie MonoGame hry do komponentov

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
matesax
Tvůrce
Avatar
Odpovedá na Mini
matesax:8.12.2012 18:13

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

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.

Odpovedať
Jste dobří jen v tom, co vás baví.
Avatar
matesax
Tvůrce
Avatar
Odpovedá 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], ...);
Editované
Avatar
matesax
Tvůrce
Avatar
Odpovedá 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...)

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?

Editované
Odpovedať
Jste dobří jen v tom, co vás baví.
Avatar
matesax
Tvůrce
Avatar
Odpovedá 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...

Editované
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?

Odpovedať
Jste dobří jen v tom, co vás baví.
Avatar
matesax
Tvůrce
Avatar
Odpovedá 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...

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 ?

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čí) :)

Editované
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 35.