Xpsystem skriva ut vilken level man är på

Permalänk
Avstängd

Xpsystem skriva ut vilken level man är på

Tjenna!

Jo jag håller på att bygga lite design till ett spel, dock har jag stått på ett problem och jag har inte jobbat så mycket med java förut.
Spelet bygger jag i unity och använder javascript för kodningen.

Det jag vill ha är :

Du är på nivå 1
Då ska det på skärmen skrivas ut:

Level 1 XP: 10 / 100

Du är på nivå 2

Level 2 XP: 10 / 300

Osv.

Koden funkar, så den visar Level 1 , level 2 etc. Men Där den räknar XP så vill jag ändra hur mkt xp man behöver beroende på vilken level man är på.

Koden hittils:

static var xpcollect : int = 0; function OnGUI () { GUI.Label (Rect (10, 25, 90, 40), ("Xp: " + xpcollect + " / 100" )); //// !!!! Det är alltså här jag villl kunna ändra !!!! if (xpcollect > 99) GUI.Label (Rect (10, 40, 90, 40), ("Level 1")); if (xpcollect > 299) GUI.Label (Rect (10, 40, 90, 40), ("Level 2")); }

Se ovan vilken del av koden det är jag vill kunna ändra.

Vad är enklaste sättet?
Jag har testat lite olika, är ganska van vid C# och PhP programmering.

Visa signatur

My setup:
[Intel Core i7-5960X @ 4ghz] - [Asus X99-deluxe] - [48GB Corsair Dominator Platinum] - [Geforce Gtx 780TI SLI] - [Corsair AX1200i] - [Kingston 240GB SSD m.2] - [4x 64GB OCZ-Vertex SSD in raid] - [6x 2TB Wd Red] - [Asus ROG SWIFT PG278Q]

Permalänk
Medlem

Vad menar du? Lägg in en variabel som ändras beroende på vilken nivå du är i uträkningen?

Visa signatur

2600k @ STOCK <|> GTX 970 Omega!<|> Nån samsung 500gb ssd <|> 16 GB Kingston Hyper X <|> BenQ XL2420t
"Det finns inget skrot, bara gamla delar som kan användas på nya sätt" - Mulle Meck

Permalänk
Avstängd

@elklazor:

Ja det är tanken.

Typ nåt i stil med som jag hade skrivit de i php:

if (xpcollect > 99) echo " / 100"; if (xpcollect > 199) echo " / 300"; // osv osv

Visa signatur

My setup:
[Intel Core i7-5960X @ 4ghz] - [Asus X99-deluxe] - [48GB Corsair Dominator Platinum] - [Geforce Gtx 780TI SLI] - [Corsair AX1200i] - [Kingston 240GB SSD m.2] - [4x 64GB OCZ-Vertex SSD in raid] - [6x 2TB Wd Red] - [Asus ROG SWIFT PG278Q]

Permalänk
Medlem
Skrivet av dallan87:

@elklazor:

Ja det är tanken.

Typ nåt i stil med som jag hade skrivit de i php:

if (xpcollect > 99) echo " / 100"; if (xpcollect > 199) echo " / 300"; // osv osv

static var xpcollect : int = 0; function OnGUI () { var str = " / 100"; if(xpcollect > 199) { str = " / 300"; } GUI.Label (Rect (10, 25, 90, 40), ("Xp: " + xpcollect + " / 100" )); //// !!!! Det är alltså här jag villl kunna ändra !!!! if (xpcollect > 99) GUI.Label (Rect (10, 40, 90, 40), ("Level 1")); if (xpcollect > 299) GUI.Label (Rect (10, 40, 90, 40), ("Level 2")); }

Visa signatur

2600k @ STOCK <|> GTX 970 Omega!<|> Nån samsung 500gb ssd <|> 16 GB Kingston Hyper X <|> BenQ XL2420t
"Det finns inget skrot, bara gamla delar som kan användas på nya sätt" - Mulle Meck

Permalänk
Avstängd

@elklazor:

Funkade precis som jag tänkt!
Tack så mkt!

Fullständiga scriptet blev alltså:

static var xpcollect : int = 0; function OnGUI () { var str = " / 100"; if(xpcollect > 199) { str = " / 300"; } GUI.Label (Rect (10, 25, 90, 40), ("Xp: " + xpcollect + str )); if (xpcollect >= 0) GUI.Label (Rect (10, 40, 90, 40), ("Level 1")); if (xpcollect > 99) GUI.Label (Rect (10, 40, 90, 40), ("Level 2")); if (xpcollect > 299) GUI.Label (Rect (10, 40, 90, 40), ("Level 3")); }

Visa signatur

My setup:
[Intel Core i7-5960X @ 4ghz] - [Asus X99-deluxe] - [48GB Corsair Dominator Platinum] - [Geforce Gtx 780TI SLI] - [Corsair AX1200i] - [Kingston 240GB SSD m.2] - [4x 64GB OCZ-Vertex SSD in raid] - [6x 2TB Wd Red] - [Asus ROG SWIFT PG278Q]

Permalänk
Medlem
Skrivet av dallan87:

@elklazor:

Funkade precis som jag tänkt!
Tack så mkt!

Fullständiga scriptet blev alltså:

static var xpcollect : int = 0; function OnGUI () { var str = " / 100"; if(xpcollect > 199) { str = " / 300"; } GUI.Label (Rect (10, 25, 90, 40), ("Xp: " + xpcollect + str )); if (xpcollect >= 0) GUI.Label (Rect (10, 40, 90, 40), ("Level 1")); if (xpcollect > 99) GUI.Label (Rect (10, 40, 90, 40), ("Level 2")); if (xpcollect > 299) GUI.Label (Rect (10, 40, 90, 40), ("Level 3")); }

Vad bra!
Såg att jag hade missat att skriva in variabeln nedan men det såg du ju själv.

Visa signatur

2600k @ STOCK <|> GTX 970 Omega!<|> Nån samsung 500gb ssd <|> 16 GB Kingston Hyper X <|> BenQ XL2420t
"Det finns inget skrot, bara gamla delar som kan användas på nya sätt" - Mulle Meck

Permalänk
Medlem

Skrev en alternativ lösning som är lättare för många levels.

XP:n som behövs för att nå varje level sparas i en array, där xpForLevel[2] är det som behövs för level 2 o.s.v. Eftersom man genast är level 1 så är xpForLevel[0] och xpForLevel[1] = 0.

Leveln sparas också i en variabel, och uppdateras varje gång OnGUI körs. OnGUI innehåller nu bara tre rader kod. Det ända som någonsin måste ändras om du vill byta mängden XP som krävs eller lägga till flera levels, är xpForLevel-arrayen.

/* 0 xp för att nå level 0 0 xp för att nå level 1 100 xp för att nå level 2 300 xp för att nå level 3 etc. */ static var xpForLevel = [0,0,100,300,700,1200]; static var xpcollect : int = 0; static var level : int = 0; function OnGUI () { // Använder while istället för if, då xp kan ha ändrat så mycket att man får flera levels på en gång // Ökar på level så länge man har tillräckligt xp för nästa level, kollar först att man inte har nått högsta leveln while(level < xpForLevel.length-1 && xpcollect >= xpForLevel[level+1]) level++; GUI.Label (Rect (10, 25, 90, 40), ("Xp: " + xpcollect + " / " + xpForLevel[level+1])); GUI.Label (Rect (10, 40, 90, 40), ("Level " + level)); }

Permalänk
Avstängd

@Tazavoo:

Du läste nog mina tankar
För det är precis nåt sånt jag tänkt nu när man börjat kolla, blir bättre än att skriva 100 if-satser och xpn kommer gå linjärt med nivån.

Ska kolla på detta!

Visa signatur

My setup:
[Intel Core i7-5960X @ 4ghz] - [Asus X99-deluxe] - [48GB Corsair Dominator Platinum] - [Geforce Gtx 780TI SLI] - [Corsair AX1200i] - [Kingston 240GB SSD m.2] - [4x 64GB OCZ-Vertex SSD in raid] - [6x 2TB Wd Red] - [Asus ROG SWIFT PG278Q]