játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5462
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2522

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2190
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] > 6 < [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55]
Csengusz - Tag | 15 hsz       Online status #208594   2015.11.10 19:13 GMT+1 óra  
Köszi mindenkinek, már megoldottam.

   
Csengusz - Tag | 15 hsz       Online status #208591   2015.11.10 13:25 GMT+1 óra  
Hali! Szeretnék menüt készíteni a játékomhoz és a save/load még nem tiszta. tehát a lényeg az lenne, hogy legyen egy start és egy folytatás lehetőség. Érdemes playerprefs-el csinálnom vagy inkább adatbázis? Ha valaki tudna linkelni valami használhatót megköszönném.

   
zbalai - Tag | 51 hsz       Online status #208588   2015.11.09 10:14 GMT+1 óra  
Egy szint után elkerülhetetlen, hogy a játékot/applikációt összekössük valamilyen hálózattal, akár reklám, akár más miatt.
Most erről lesz egy workshop, a Unity 3D API hívásokról:
http://www.meetup.com/Unity-3D-Budapest/events/226480761/

   
Viperion - Tag | 540 hsz       Online status #208584   2015.11.08 13:50 GMT+1 óra  
2d ruha fizikát hogyan csináljak. Mert csak 3d re találtam ruha fizikát az unitybe.

   
Csengusz - Tag | 15 hsz       Online status #208580   2015.11.07 22:58 GMT+1 óra  
Idézet
Pixi :
Csengusz: Én ugyan nem Unity-zek, de nem lehet az, hogy zuhanás után nem resetelődik a játékosod zuhanási sebessége, és respawnkor már akkora, hogy két frame között simán átesik a platformon, mert közben nem érzékelt ütközés detektálást? Ha a Unity beépített rendszere csinálja ezt a hibát, akkor az viszont gáz. Én a helyedben kicsit belepiszkálnék manuálisan. Pl. ha (feltételezem) nagyot zuhantál a mélybe, akkor respawnkor a játékosod zuhanó sebességét (amire hat az alap gravitáció), azt lenullázod. Egy másik megoldás, hogy csinálsz a játékosod zuhanási sebességére egy korlátot, hogy egy bizonyos zuhanási sebesség után maradjon fixen egy adott értéken, amitől még a legvékonyabb platformon sem történik átesés. Vagy pedig csinálhatsz olyat is, hogy minél nagyobb a zuhanási sebességed, arra az időre arányosan annyival megnöveled a játékosod "hitbox"-át. Így ugyan nem lesz full reális a fizika, de nagyon gyors mozgásnál már nem nagyon veszed észre, hogy mikor is történt az ütközés, csak azt látod, hogy tényleg tud érintkezni a legvékonyabb tárgyakkal is. Most értsd úgy, hogy egy 5x5-ös objektumon alapból 5x5 pixel széles a hitbox is, de egy bizonyos mozgási sebességnél ezt akár megnövelheted 10-re is, maga a játékos sprite-ja meg maradhat az eredeti 5x5-ön.



Köszönöm a segítséget! Vért izzadva de sikerült végül (egyelőre) kompromisszum mentesen megcsinálni. ..és csak egy kis k****g legördülő menüt kellett átállítani. De nagyon sokat tanultam a megoldásaidból.

   
Slyrfecso - Tag | 44 hsz       Online status #208579   2015.11.07 22:18 GMT+1 óra  
Sziasztok!

Találkoztatok már a TAB, ENTER, BACKSPACE problémával böngészőben?
InputField-ből InputFieldbe szeretnék átlépni, vagy törölni, majd a végén egy enter.
(Login)
Sajnos a Chrome-ban a backspace-re az előző internetes oldalra visszalép és nem töröl.
Unityben a SetNextControlName működik de a böngészőben már nem lehet Tabolni.

Key code ötleteket láttam, de eddig nem sikerült működésre bírnom.

   
Instalok - Tag | 558 hsz       Online status #208574   2015.11.07 09:56 GMT+1 óra  
Egyébként, ha "nem tudod kipróbálni", akkor miért volt annyira fontos tudni, hogy mit csinál? Egyébként a doksiban elég jól le vannak írva. Legközelebb egy doksi linkkel gyere, hogy "tessék, ezt megnéztem, ezt-meg-ezt értem, de nem értem azt, hogy...". Bár a doksi sok helyen hibás/hiányos, azért a legtöbb esetben rendben van, és még példák is vannak ott, hogy mire és hogyan tudod használni.

   
Lord_Crusare - Törzstag | 1302 hsz       Online status #208572   2015.11.06 17:40 GMT+1 óra  
Igazából számomra ez nagyon meglepő. Programozóként egyetlen betűt sem írhatsz el -- akár egy kis és nagybetű különbség is gond lehet!

Camera.ScreenPointToRay-re gondolsz? Itt van leírva, hogy mit tud:

http://docs.unity3d.com/ScriptReference/Camera.ScreenPointToRay.html

   
Viperion - Tag | 540 hsz       Online status #208571   2015.11.06 16:20 GMT+1 óra  
Lord ccrusare azért nem lett volna lehetetlen kitalálni elírtam és nem vettem észre.
Screenpointtoray.

   
Lord_Crusare - Törzstag | 1302 hsz       Online status #208569   2015.11.06 12:45 GMT+1 óra  
Ööö... ennek akkor eleve rosszul álltál neki. Egy darab loot ablakot kellene csinálnod, és annak a tartalmát kellene variálnod az aktuális loottól függően.

Egyébként pedig úgy, hogy minden ablaknak külön taget adsz. Akárhány taget lehet definiálni.

   
sarakrael - Tag | 14 hsz       Online status #208568   2015.11.06 12:10 GMT+1 óra  
Idézet
Lord_Crusare :
Ha jól értem, van egy HUD-od a jelenetben, és erre kellene hivatkoznia sok prefabnak -- ez egyszerű. Állíts be egy "tag"-et a HUD-nak ( mondjuk pl. "HUD" ), majd a GameObject.FindGameObjectWithTag eljárással keresd meg ezt az objektumot és tárolj rá egy referenciát. Így minden prefab a létrejöttekor megkeresi a HUD-ot és tud rá hivatkozni.

Fontos: a FindGameObjectWithTag relatíve lassú művelet, így kizárólag a "Start"-ban hívd meg.



Úgypróbálom megfogalmazni, hogy ez olyan, mint amikor egy játékban megölsz valakit, és akkor előjön egy loot ablak. Na most nekem sok hullám van, és sok loot ablakom. Vagyis ha adok neki egy taget, akkor sok hud ablaknak ugyanaz lesz a tagje, és ha én használom a FindGameObjectWithTag-et, akkor honnan tudja majd a prefab, hogy melyik az ő UI-ja?

   
Lord_Crusare - Törzstag | 1302 hsz       Online status #208567   2015.11.06 11:54 GMT+1 óra  
Mi az a Srenpointtoray? Sosem találkoztam még ezzel a kifejezéssel.

   
Viperion - Tag | 540 hsz       Online status #208566   2015.11.06 11:09 GMT+1 óra  
Srenpointtoray vissza ad egy ray-t de ennek a vissza adot raynek mi lesz az iránya?
Mert a paramétereiben meg kell adni x,y a z pedig ignorálva van. Az x,y az a kiinduló pontja a ray nek ugye?
És a kiinduló pontból melyik irányba tart tovább vagy ilyenkor még csak egy pont és nincs iránya?

Most nem tudom kipróbálni azért kérdem.

   
sarakrael - Tag | 14 hsz       Online status #208565   2015.11.06 09:54 GMT+1 óra  
Üdv!
Hogyan tudom elérni, hogy a UI mindig ugyanott maradjon? van egy panel, amit egy gameobjecttel együtt spawnolok,és elcsúszik. Ha csak berakom simán a pályára, jól működik, de amint egy scriptben meghívom már nem jó és elképzelésem sincsen, hogy miért.

   
sarakrael - Tag | 14 hsz       Online status #208549   2015.11.03 17:02 GMT+1 óra  
Hello!
A problémám félig szerintem Blender, de inkább Unity, úgyhogy itt teszem fel a kérdést.
Importáltam a blenderben készített fbx modellt a játékomba ami egy jármű. A probléma az, hogy ha belerakok valamit úgy, hogy a jármű legyen a parent, akkor felborul a koordináta rendszer, de ami mégnagyobb probléma, hogy a gyerekké lett objectek eldeformálódnak. Van egy olyan tippem, hogy az importált fájl a hibás, de nem jöttem rá, hogy miért.

   
sz!l4rd - Tag | 3 hsz       Online status #208545   2015.11.03 09:46 GMT+1 óra  
frogbonegames:
nagyon szépen köszönöm ez sokat segitet nekem !

   
frogbonegames - Tag | 74 hsz       Online status #208544   2015.11.02 22:38 GMT+1 óra  
sz!l4rd:
Ez felvesz valamit ami a kamera irányában van, bizonyos közelségben


using UnityEngine;
using System.Collections;

public class PickupObject : MonoBehaviour
{
Camera mainCamera;

// Use this for initialization
void Start ()
{
mainCamera = Camera.main;
}

// Update is called once per frame
void Update ()
{
if(Input.GetKeyDown (KeyCode.E))
{
{
int x = Screen.width / 2;
int y = Screen.height / 2;

Ray ray = mainCamera.ScreenPointToRay(new Vector3(x,y));
RaycastHit hit;
if(Physics.Raycast(ray, out hit,2f))
{
Clickable p = hit.collider.GetComponent<Clickable>();

if(p != null)
{
//Itt lehet pl. bekapcsolni a megfelelő objektumot. A p a talált objektum

}
}
}
}
}
}

   
frogbonegames - Tag | 74 hsz       Online status #208540   2015.11.02 00:39 GMT+1 óra  
sz!l4rd: Ha nem felejtem el, megkeresem neked, úgy jó, hogy amerre a kamera néz, megnézi, van-e ott valami, és "e"vel valamit beállít (pl bekapcs=true???

Másik kérdés: Ha saját Shadert akarok írni, ( mert sehogy sem tudom importálni a fbx-eket blenderből megfelelő normallal, kerestem egy doublesided shadert), akkor hogy állítom be, hogy ha "png"-t adok textúrának, akkor átvegye a textúra alpháját (mint a standard shader transparent mode-ban)?
Szóval olyan shader kellene ami kétoldalú, de egyúttal átveszi a png alpháját.

   
sz!l4rd - Tag | 3 hsz       Online status #208538   2015.11.01 18:16 GMT+1 óra  
Hello mindenkinek! nekem csak egy icipici segitség kellene még pontosabban egy script.
Egyedül készitem a játékomat és zene,textúrák minden egyedi csak éppen scriptelni nem tudok.
szóval nekem egy olyan scriptre lenne szükségem hogy pl. egy tárgyhoz közel megyünk akkor az ''e''
betű lenyomásával aktiváljunk egy objektumot ami kivan kapcsolva a pályán (pl. egy fal,asztal)
amennyiben tudnátok nekem segiteni nagyon meg köszöném!

   
Pixi - Tag | 206 hsz       Online status #208537   2015.11.01 15:43 GMT+1 óra  
Csengusz: Én ugyan nem Unity-zek, de nem lehet az, hogy zuhanás után nem resetelődik a játékosod zuhanási sebessége, és respawnkor már akkora, hogy két frame között simán átesik a platformon, mert közben nem érzékelt ütközés detektálást? Ha a Unity beépített rendszere csinálja ezt a hibát, akkor az viszont gáz. Én a helyedben kicsit belepiszkálnék manuálisan. Pl. ha (feltételezem) nagyot zuhantál a mélybe, akkor respawnkor a játékosod zuhanó sebességét (amire hat az alap gravitáció), azt lenullázod. Egy másik megoldás, hogy csinálsz a játékosod zuhanási sebességére egy korlátot, hogy egy bizonyos zuhanási sebesség után maradjon fixen egy adott értéken, amitől még a legvékonyabb platformon sem történik átesés. Vagy pedig csinálhatsz olyat is, hogy minél nagyobb a zuhanási sebességed, arra az időre arányosan annyival megnöveled a játékosod "hitbox"-át. Így ugyan nem lesz full reális a fizika, de nagyon gyors mozgásnál már nem nagyon veszed észre, hogy mikor is történt az ütközés, csak azt látod, hogy tényleg tud érintkezni a legvékonyabb tárgyakkal is. Most értsd úgy, hogy egy 5x5-ös objektumon alapból 5x5 pixel széles a hitbox is, de egy bizonyos mozgási sebességnél ezt akár megnövelheted 10-re is, maga a játékos sprite-ja meg maradhat az eredeti 5x5-ön.

Viperion: Mi történik akkor, ha egyszerűen kiveszed onnan teszt idejére azt a -1-et?

Ezt a hozzászólást Pixi módosította (2015.11.01 15:55 GMT+1 óra, 907 nap)

   
Csengusz - Tag | 15 hsz       Online status #208536   2015.11.01 13:16 GMT+1 óra  
Hali! van egy kis problémám. Amikor leesik a figurám a játékomban és meghal, respawn-nál mindig többször átesik a talajon. Ha csökkentem a gravity értékét Rigidbody2D-nél, akkor ez a hiba megszűnik viszont úgy már nem tetszik a mozgás. Tud valaki esetleg erre valamit?

Ezt a hozzászólást Csengusz módosította (2015.11.01 13:57 GMT+1 óra, 907 nap)

   
Viperion - Tag | 540 hsz       Online status #208532   2015.10.31 10:53 GMT+1 óra  
Szerintem azért van ez mert amikor elindítod akkor még aktív majd a script lefutása után válik láthatatlanná. Az inspectorban szedd ki a pipát a két kamera gameobjektről hogy úgy induljon,hogy az a kettő alapból deaktivált.

Ebben a scriptben miért kell a -1 el beszorozni a 27 -dik sorban?:
Parallax Scroll:

Tekerjétek a vidit 23:35 re és ott láthtó lesz az egész script.

   
Slyrfecso - Tag | 44 hsz       Online status #208528   2015.10.30 08:18 GMT+1 óra  
Sziasztok!

Abban kérném a segítségeteket, hogy a scenen van 3 kamera, melyből az 1. az elsődleges.
A másik kettő az indítást követőn scripttel false. Csak az indítást követőn egy pillanatra pillanatképet látsz a 3 kamerából, majd beáll az elsőre.
Ezt nagyon nem lehet észrevenni, de engem egy kicsit zavar.

Talán még annyi, hogy szerkesztésnél a game ablak is a 3. kamerát mutatja.


Van ötletetek mi okozhatja.
Mind a három a MainCamera tagen van és a default layeren.

Készítettem egy screenrecordot, amin látszik a jelenség:
Kamera_bug

   
Csengusz - Tag | 15 hsz       Online status #208526   2015.10.29 20:05 GMT+1 óra  
Idézet
Instalok :
Csengusz:
Magyarul nem tudom mennyi infót találsz, de elég sok anyag van a honlapjukon, videótutorialok is, azok alapján meg lehet csinálni, még akkor is, ha nem érted minden egyes szavát.



Köszi a bátorítást! Most vagyok túl egy 32 videóból álló tutorial sorozaon és John Carmack-nak érzem magam.

   
Viperion - Tag | 540 hsz       Online status #208520   2015.10.28 06:57 GMT+1 óra  
Csak azokra a képekre alkalmazható a static batching amellyeknek a transform.position vagy rotationadattagjaik nem fognak változni?

Ha ez igaz,akkor alkalmazható egy olyan képre a sttic batching amelynek csak az offsetjét akarom állítani?

   
Slyrfecso - Tag | 44 hsz       Online status #208519   2015.10.26 13:04 GMT+1 óra  
Egy Unity alkalmazott megoldotta, még pedig úgyhogy a betűméretet 50 pontosra növeltem majd a fizikai méretét visszakicsinyítettem, mivel a betű képként van lekezelve, ezáltal a képek felbontáa nőtt meg, így már tűéles

3D Text

   
FZoli - Szerkesztő | 4892 hsz       Online status #208509   2015.10.21 14:29 GMT+1 óra  
hát, az új UI-t ajánlom elsősorban, hogy azt használd, ott is van lehetőség world spacere.
   
Slyrfecso - Tag | 44 hsz       Online status #208508   2015.10.21 13:21 GMT+1 óra  
Nekem is lenne egy ilyesmi kérdésem.
Méretvonalakra 3D Textet használtam, mert így biztosan tében ott marad és a vonalakkal együtt könnyen tudom mozgatni. Ezzel két gondom van, hogy a 3D text mindenen átlátszik, így függvényekkel ki be kell kapcsolgatnom. A másik, hogy borzasztóan pixeles egy GUI.Labelhez képest.

Esetleg valami ötlet, hogyan oldjam meg másképp, vagy a minőségén hogyan lehetne javítani?




   
FZoli - Szerkesztő | 4892 hsz       Online status #208507   2015.10.21 09:49 GMT+1 óra  
Ahogy Matzi mondja, illetve annyit tennék hozzá a második javaslatához (bár sztem te ezt nem akarod használni, te a point filtert kerested), hogy felméretezni kikapcsolt resample funkcióval (tehát sima resize) kell a rajzprogramban, és a textúrád méretének egész többszörösére méretezd pixelben.

Valamint, és ez a point filterre is vonatkozik, az import beállításoknál ki kell kapcsolnod a 2 hatványra történő átméretezést, különben a 19x19 pixeledből 16 vagy 32 lesz, beálíltástól függően.
   
Matzi - Szerkesztő | 2522 hsz       Online status #208506   2015.10.20 19:04 GMT+1 óra  
Tibsy:
Ezt úgy hívják, hogy texture filtering. Állítsd át a textúrán point filterre, attól ugyan recés lesz a széle, de ez ilyen. Ha azt akarod, hogy azért a pixelek széle ne legyen nagyon recés, akkor méretezd fel az egész textúrát a sokszorosára.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Tibsy - Tag | 307 hsz       Online status #208505   2015.10.20 18:19 GMT+1 óra  
Rajzoltam egy 19x19-pixel textúrát paintba ( Direkt ) és a Unity-ben homályos a textúra
Nem lehet ezt a funkciót kikapcsolni ?.. vagy ez mire jó így nem tudok tű éles textúrát egy modellre sem rakni
   
FZoli - Szerkesztő | 4892 hsz       Online status #208504   2015.10.20 08:28 GMT+1 óra  
igen, az oPhysics.OverlapSphere jó, bár az csak boundingra csekkol, de jó még a Physics.Linecast, és a Physics.Raycast is, egyik sem igényel rigidbodyt. Nem tudom mennyire "tiny" ellenfelek lennének, de simán megoldanám kellő mennyiségú linecasttal.
   
Instalok - Tag | 558 hsz       Online status #208503   2015.10.20 07:14 GMT+1 óra  
Neon pizza Az egy Area of Effect (AoE) támadás, minden, ami az adott területen belül van, megkapja a sebzést. És vannak egyéb formák is esetlegesen. Ezt a "neon pizzát" egyébként könnyű leimplementálni, mert csak egy távolság és irány vizsgálat, viszont maguknak az objektumoknak (mikkel kell ütköztetni) a lekérdezése lehet problémás. Arra is gondoltam, hogy ezekre vagy egy collision mesh-t, vagy egy AABB-t használok. Az AABB megmondja az objektum-listát, amin elvégzem a finomabb ütközésdetektálást.

Egyébként a collision event elkapása jelenti a problémát. Például az egyik objektumon lennie kell egy Rigidbody-nak az eddigi tapasztalatok, és a doksi szerint is:
Idézet
Collision events are only sent if one of the colliders also has a non-kinematic rigidbody attached

Nincs valami mód arra, hogy lekérjem az adott player környezetében lévő objektumokat egy bizonyos távolságon belül? Nyilván nem a brute-force módra gondolok, hogy végignézem az összes objektumot. Esetleg ezzel?

   
FZoli - Szerkesztő | 4892 hsz       Online status #208502   2015.10.20 06:23 GMT+1 óra  
projectile ütközésre ajánlom a raycastot, de a képen nem tudom mi az a neon pizza és mi a játéktechnikai szerepe úgyhogy arra nem mondok semmit.
   
Instalok - Tag | 558 hsz       Online status #208501   2015.10.19 21:06 GMT+1 óra  
Komponensekből építek fel egy képességet (lásd Programozás elmélet topic), viszont az ütközésnél ismét elgondolkoztam picit. Különböző virtuális ütközési testeket szeretnék használni;
projectile esetén például egy bizonyos méretű gömböt reptetnék, azonban lennének AoE dolgok is, mint valami ilyesmi:

Erre tudnék például saját mesh-t használni. Illetve nem akarom leszűkíteni egy ütköző testre, azaz akár olyan is lehetne, amelynek az elején van egy ehhez a képhez hasonló cone, de aztán folytatódik még egy bizonyos sávban, stb.

Hogy tudnám ebbe belekeverni a Unity rendszerét? Eszembe jutott az is, hogy ezeket az ütközésvizsgálatokat könnyű leprogramozni (sphere, cone, box), viszont hogy tudnám összeegyeztetni a Unity-vel? Úgy értem, ha nem használom a rendszerét, akkor mivel minden objektumot nem akarnék végignézni, így saját térfelosztó rendszert is írnom kellene. Amit még egyelőre nem szeretnék megtenni, ha van más lehetőség.

   
Instalok - Tag | 558 hsz       Online status #208480   2015.10.17 10:05 GMT+1 óra  
Valami ilyesmit azért simán megcsinálhatsz
Kód:
public class Valami : MonoBehaviour
{
    private string names;
    private string prices;
    private int totalPrice;
   
    public void Gombnyomaskor()
    {
        names = "";
        prices = "";
        totalPrice = 0;
       
        // itt jön a mostani rész, csak annyi, hogy a names és prices részt töltöd fel
        GameObject[] objectsPrice = GameObject.FindGameObjectsWithTag("Player");
        foreach (...)
        {
            ...
        }
    }
   
    private void OnGUI()
    {
        GUI.Label(...);
        // stb...
    }
}

Meghívod azt a függvényt, amikor megnyitod a menüt, és kész.

   
Slyrfecso - Tag | 44 hsz       Online status #208478   2015.10.17 08:57 GMT+1 óra  
Instalok nagyon szépen köszönöm a segítséget, tökéletesen működik.
Az itemPrice integer volt majd a megjelenítéshez stringé kellett alakítanom.
Abban igazad van, hogy jobb lenne egy gombbal meghívni, de abban a menüben ahol ez elérhető,
csak akkor használják, ha erre kíváncsi valaki, így ezt a menüt is gombnyomásra hívja meg.
(Tudom, hogy plusz egy gomb 1x megnyomásával 1x futna le.)
Nem tudom, hogy az oldotta-e meg az ősszeadást, hogy kivettem a publicból a totalt, de amint kivettem a header részből és függvényhez raktam, azóta jól ad össze.
Azért gondoltam, hogy folyamatosan fusson a ciklus, mert így egy új termék hozzáadása vagy törlése esetén azonnval változik a lista és a végösszeg. Bár ez gondolom, egy-két gomb megnyomása és a beillesztés soránt tárolt items-ekkel is működne.


Készítettem egy screenshotot amin láthatod a végeredményt, valamint a futás közbeni terhelés értékeit is.
http://terberendezo.alexbutor.hu/finish_SUM.png
Meg nem tudom mit jelentenek ez az értékek, csak bízni merek abban, hogy ha valami 10% alatt van,
az nincs terhelés alatt.


Ismét köszönöm, hogy segítettél, és a korsóm nincs tele, ami annyit jelent, hogy szeretnék Tőled, tőletek tanulni.


Kód:
//ÖSSZEÁLLÍTÁS VÉGÖSSZEGE
GUI.Label(new Rect(Screen.width / 2 - 170, 360, 60, 25), "Az összeállítás termékei:" , szovegbold);

database = GameObject.FindGameObjectWithTag("Item Database").GetComponent<ItemDatabase>();

string nevek = "";
string arak = "";
int total = 0;
string vegosszeg = "";


if (GameObject.FindGameObjectsWithTag("Player") != null)
{
GameObject[] objectsPrice = GameObject.FindGameObjectsWithTag("Player");
foreach (GameObject go in objectsPrice)
{
if (go.name != null)
{
for (int i = 0; i < 552; i++)
{
if (go.name == database.items[i].itemName)
{
int price = int.Parse(database.items[i].itemPrice);
arak +=database.items[i].itemPrice + " Ft+Áfa" + "\n";
nevek +=database.items[i].itemName + "\n";
total += price;
}
}
}
}
}



GUI.Label(new Rect(Screen.width / 2 - 170, 380, 60, 25), nevek, szoveg);
GUI.Label(new Rect(Screen.width / 2 + 40, 380, 60, 25), arak, szovegjobbraZART);
GUI.Label(new Rect(Screen.width / 2 + 40, 360, 60, 25), "Nettó ár:" , szovegjobbraZART);

GUI.Label(new Rect(Screen.width / 2 - 170, 525, 60, 25), "Az összeállítás:" , szoveg);
GUI.Label(new Rect(Screen.width / 2 - 170, 495, 60, 25), "Az összeállítás végösszege:" , szoveg);

vegosszeg = total.ToString();

GUI.Label(new Rect(Screen.width / 2 +40, 495, 60, 25), vegosszeg + " Ft+Áfa" , szovegjobbraZART);
if(GUI.Button(new Rect(Screen.width / 2 - 40, 522, 140, 20), "MEGRENDELÉSE"))

{

}

Ezt a hozzászólást Slyrfecso módosította (2015.10.17 09:06 GMT+1 óra, 922 nap)

   
Instalok - Tag | 558 hsz       Online status #208475   2015.10.16 16:36 GMT+1 óra  
Azért, mert csak egyszer adsz neki 0 értéket, és ahhoz képest mindig csak hozzáadsz. Egyébként az egész keresést én nem tenném az OnGUI()-ba, hanem egy adott akciókor (például gombnyomásra) legenerálod a stringet, és utána csak kirajzolod. Mert ez így nagyon lassú lesz.

   
Slyrfecso - Tag | 44 hsz       Online status #208474   2015.10.16 15:28 GMT+1 óra  
Huuuu, nagyon szépen köszönöm.

int price = database.items.itemPrice;
//Cannot implicitly convert type `string' to `int'

int price = Int32.Parse(database.items.itemPrice);
//The name `Int32' does not exist in the current context

Ezt módosítottam, publikussát tettem a total értékét:
public int total = 0;
int price = int.Parse(database.items.itemPrice);

Ez működik, de isszonyatosan számol az Insepctorban a számláló.

Mit csinálok rosszul?

   
Instalok - Tag | 558 hsz       Online status #208473   2015.10.16 14:43 GMT+1 óra  
Ha az itemPrice egy integer, akkor csak egyszerűen szummázol egyet.
Kód:
int total = 0;

// ennél a résznél:
if (go.name == database.items[i].itemName)
{
    int price = database.items[i].itemPrice;
    arak += price + " Ft+Áfa" + "\n";
    nevek +=database.items[i].itemName + "\n";
    total += price;
}

Ha nem integer, akkor stringből kell átkonvertálnod, például így:
Kód:
int price = Int32.Parse(database.items[i].itemPrice);

   
Slyrfecso - Tag | 44 hsz       Online status #208472   2015.10.16 14:33 GMT+1 óra  
Ez egy nagyon jó ötlet, azonban a sceenen van egy térberendezés, ami nem a futtatáskor jön létre, így azok item-eit mindenképpen meg kell találnom. Viszont az inventoryból beillesztett termékeknél jobb lenne.
Köszönöm.

Tudnál még abban segíteni, hogy az általam kapott "arak"-at hogyan lehetne összeadni?
Jelenleg gyönyörűen kilistázza perennel sortöri, de az összeadásra nem jövök rá.


   
Instalok - Tag | 558 hsz       Online status #208471   2015.10.16 09:53 GMT+1 óra  
Apropó, jut is eszembe: amikor a "képernyőre rakod" az objektumot, nem tudod már akkor eltárolni a hozzá tartozó Item-et? Így nem kell futásidőben keresni.

   
Instalok - Tag | 558 hsz       Online status #208470   2015.10.15 23:01 GMT+1 óra  
Hát, akkor kérdezni kell, hátha tudunk válaszolni!
Hasonló, mint amit csináltál, csak az nagyon nem optimális. Konkrétan n*m futásideje van (minden egyes game objecthez (n) megvizsgálod az összes itemet (m) ). Ennél jobb a Dictionary (ami egy rendezett fa), amiben a keresési idő log(n). Kulcs alapján így gyorsan megtalálsz egy értéket. Keress rá a google-ben (c# dictionary).

   
Slyrfecso - Tag | 44 hsz       Online status #208469   2015.10.15 21:06 GMT+1 óra  
Elnézést ez egy védekező mechanizmus nálam, mivel nem értettem amit írtál gondoltam tolok egy próbálkozást és talán abban meglátjátok a hibát.

ItemDatabase osztályt nem értem, segíts lszi mit keressek és rögtön megírom.
Dictionary-t még nem használtam, ezért restellem, de átugrottam.

Óvatosban írom, hogy módosítottam az előző postom, ami szerintem tökéletes...

Ezt a hozzászólást Slyrfecso módosította (2015.10.15 22:21 GMT+1 óra, 923 nap)

   
Instalok - Tag | 558 hsz       Online status #208468   2015.10.15 19:29 GMT+1 óra  
Egyáltalán figyelsz arra, amit írok, vagy csak írod a sajátodat?

   
Slyrfecso - Tag | 44 hsz       Online status #208466   2015.10.15 18:52 GMT+1 óra  
Itt a megoldásom:

Kód:
GUI.Label(new Rect(Screen.width / 2 - 170, 360, 60, 25), "Az összeállítás termékei:" , szovegbold);

database = GameObject.FindGameObjectWithTag("Item Database").GetComponent<ItemDatabase>();


string nevek = "";
string arak = "";

GameObject[] objectsPrice = GameObject.FindGameObjectsWithTag("Player");
foreach (GameObject go in objectsPrice)
{
for (int i = 0; i < 552; i++)
{
if (go.name == database.items[i].itemName)
{
arak +=database.items[i].itemPrice + " Ft+Áfa" + "\n";
nevek +=database.items[i].itemName + "\n";
}
}
}


GUI.Label(new Rect(Screen.width / 2 - 170, 380, 60, 25), nevek, szoveg);
GUI.Label(new Rect(Screen.width / 2 + 40, 380, 60, 25), arak, szovegjobbraZART);

Ezt a hozzászólást Slyrfecso módosította (2015.10.15 22:20 GMT+1 óra, 923 nap)

   
Instalok - Tag | 558 hsz       Online status #208465   2015.10.15 18:01 GMT+1 óra  
Csengusz:
Magyarul nem tudom mennyi infót találsz, de elég sok anyag van a honlapjukon, videótutorialok is, azok alapján meg lehet csinálni, még akkor is, ha nem érted minden egyes szavát.

Slyrfecso:
Lista helyett használhatsz pl. Dictionary-t, úgy string alapján meg tudnád keresni az itemet. Továbbra sem tudjuk, hogy az ItemDatabase osztályodban hogy tárolod az elemeket.

   
Slyrfecso - Tag | 44 hsz       Online status #208464   2015.10.15 16:44 GMT+1 óra  
Arra már rájöttem, hogy érem el az adatbázis egy elemét, de az index számot kellene valahogy a find GO.namel összekapcsolni.

Kód:
database = GameObject.FindGameObjectWithTag("Item Database").GetComponent<ItemDatabase>();
Debug.Log (database.items[4].itemName);

   
Csengusz - Tag | 15 hsz       Online status #208463   2015.10.15 16:32 GMT+1 óra  
Idézet
Instalok :Egyébként a Unity nem kifejezetten Androidra ad fejlesztési lehetőséget, hanem multiplatform mivolta miatt "ugyan azt" a játékot elkészítheted ios, android, windows, stb. platformokra minimális módosításokkal.



Ma beüzemeltem... minden működik. Már csináltam APK-t is tutorial alapján. Nagyon tetszik. Szeretnék minél többet megtudni a Unity-vel való játék készítésről. Tudnál/tudnátok esetleg valamit ajánlani ahonnan infót tudok szerezni magyarul?

   
Slyrfecso - Tag | 44 hsz       Online status #208462   2015.10.15 12:10 GMT+1 óra  
Jogos, remélem ez elég információ lesz.
Azt tudom, hogy ha az inventory kirajzolja a slot-okat és föléhúzom az egeret, akkor visszaadja a kívánt értéket, de azt már nem, hogyan lehet a megtalált GO.név alapján ugyanezt.

//Item
Kód:
using UnityEngine;
using System.Collections;
using System.Text.RegularExpressions;



[System.Serializable]
public class Item {

public string itemName;
public int itemID;
public string itemDesc;
public Texture2D itemIcon;
public ItemType itemType;
public GameObject itemPrefab;
public string itemPrice;

public enum ItemType {
Comfort,
Stark,
AlexStandard,
Targyalo,
PlusszTermekek,
Szekreny,
Szekek
}


public Item(string name, int id, string desc, ItemType type, string price)
{

itemName = name;
//name = Regex.Replace(name, @"[^-.aAbBcCdDlLsSoOfFjJteiIETERMÉKőŐüÜvV0-9 #!@]", "");
itemID = id;
itemDesc = desc;
itemIcon = Resources.Load<Texture2D> ("Item Icons/" + name + "_ICON");
//if(itemIcon == null)
// Debug.Log("Warning: Icon for '" + itemName + "' failed to load, please check if the file exists and the path is correct.");
itemPrefab = Resources.Load ("Prefabs/"+name) as GameObject;
itemType = type;
itemPrice = price;


}
public Item()
{

}

}



//ItemDatabase
Kód:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;


public class ItemDatabase : MonoBehaviour {
public List<Item> items = new List<Item> ();


void Start()
{

//COMFORT
items.Add(new Item("CIA-806F", 0, "íróasztal, 800 x 600 mm-es, fémlábbal, homloklap nélkül", Item.ItemType.Comfort, "32500"));
//...
}
}

   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] > 6 < [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55]