Kezdőoldal » Számítástechnika » Programozás » Unityben referenciát hol...

Unityben referenciát hol érdemes használni?

Figyelt kérdés

A netes tutorialoknál sehol se láttam, hogy referenciát használtak volna (csak ott, ahol változtatni akarnak az objektumon), pedig szerintem elég sok helyen sokkal jobb teljesítményű lenne a kód.

Például ha meghívom az A gameobjecten a B gameobject X fgv-jét, aminek egyik paramétere a forrás, vagyis az A gameobject. Én itt referenciát adnék át érték helyett, mert érték átadásnál meghívódnak konstruktorok. Bár ez kicsit nem világos, mert új object nem jön létre, ezért arra gondoltam, hogy csak egy virtuális megvalósítása jön létre az X függvényben az A objektben.

Szóval arra lennék kíváncsi, hogyha paraméterként átadjuk az A gameobject gameObject-jét, akkor most ott már alapból egy referenciát adunk át a gameObjectről?

Egy kis felvilágosítást szeretnék kérni, köszi :D


2016. jan. 27. 14:44
1 2
 1/12 anonim ***** válasza:
100%
hat, most ne sertodj meg, de erre azt tudom mondani, hogy vedd elo a C# alapjait, es az OOP alapjait, mert ezek a kerdesek nagyon alapveto hianyossagokra utalnak.
2016. jan. 27. 15:39
Hasznos számodra ez a válasz?
 2/12 anonim ***** válasza:

Vannak referencia ,èrtèk, ès pointer típusok c#ban.

C# programozàs lèpèsről lèpèsre töltsd le ezt a book ot és kezd elejètől. Most nincs időm leírni kicsot hosszú tèma. Majd kèsőbb leírom neked ide.

2016. jan. 27. 18:47
Hasznos számodra ez a válasz?
 3/12 anonim ***** válasza:
Túl nagy a tèma inkàbb nem írom le abból a könyvből megtanulhatod a referenciàkat.De röviden unityben ott kell hasznàlni referenciàkat amikir szüksèged van arra,hogy hivatkozni tudj egy komponemsre pl collider. Ezek referenciàjànak beàllítàsàt egy változóba awake vagy start metódusokban kell elvégezni mert elég csak egyszer beàllítani higy aztàn hasznàlni tudd azt ahol akarod pl az update ban egy algoritmusban.
2016. jan. 27. 21:12
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:

Félreértettetek. Mikor érdemes paraméterlistában referenciaként megnevezni valamit? (ref int valami)

Ha egy gameObjectet akarok átadni, és ahhoz hozzá akarok férni ott, ahova átadtam, akkor ref jelölés nélkül is hozzáférek, csak nem tudom, hogy ilyenkor hogy adódik át. C++-ban ugye az objektum átmásolódik, így nem érdemes érték szerinti paramétert használni e célból. Csak ugye nem tudom, hogy ha egy 3D-s világban lévő objectről beszélünk, akkor hogy másolódhatna át.

Szóval mi a különbség a fgv(gameObject), és az fgv(ref gameObject) között?

2016. jan. 27. 21:47
 5/12 anonim ***** válasza:

Ezért mondjuk, hogy nézd át az alapokat - abból megtudod, milyen típusok adódnak át referenciaként, és mely típusok adódnak át mint másolat :) (és ha arra jársz, nézd meg a különbséget pl a class és a struct között, és részben választ kapsz a kérdésedre).


De tényleg - ha nincsenek meg az alapok, nem fogsz tudni építkezni semmire.

2016. jan. 27. 22:09
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:
Rendben, köszi :D
2016. jan. 27. 22:36
 7/12 anonim ***** válasza:

fgv(gameObject) // Itt ha a gameobject referenciatípus,akkor egy olyan referenciát adsz át amivel elérheted a memórián keresztül a gameobjektet.

fgv(ref gameObject) // Itt pedig nem a gameobject referenciáját adod át hanem arra a memóriaterületre egy hivatkozást ahol közvetlen tárolódik a gameobject. Szal itt képes vagy arra,hogy ugyan arra a helyre létrehoz egy másik gameobjectet míg az első esetben ez nem lehetséges.


Olyan mintha c++ ban ezt írnád:

fgv(*gameobejct)

fgv(**gameobejct)

2016. jan. 28. 00:43
Hasznos számodra ez a válasz?
 8/12 anonim ***** válasza:

fgv(gameobejct) //mutatóban tárolt érték továbbadása.

fgv(&gameobject)//mutató változó címének a továbbadása.

2016. jan. 28. 00:45
Hasznos számodra ez a válasz?
 9/12 A kérdező kommentje:
Rendben, köszi, így már világos :D
2016. jan. 28. 01:25
 10/12 anonim ***** válasza:
C#-ban az objektumok 99%-a alapból referenciaként adódik át. Ott általában azért kell megharcolni, ha valamit direkt másolni akarsz.
2016. jan. 28. 06:53
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!