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
 11/12 anonim ***** válasza:

Futtasd le ezt visual studio-ban és meg fogsz lepődni:


namespace ConsoleApplicationRef

{

class C { public int i; }

struct S { public int i; }


class Program

{

static void fnc(C c) { c.i = 2; }

static void fns(S s) { s.i = 2; }

static void fnsr(ref S s) { s.i = 2; }


static void Main(string[] args)

{

var c = new C();

c.i = 1;

var s1 = new S();

s1.i = 1;

var s2 = new S();

s2.i = 1;


fnc(c);

fns(s1);

fnsr(ref s2);


Console.WriteLine(c.i);

Console.WriteLine(s1.i);

Console.WriteLine(s2.i);


Console.ReadKey();

}

}

}

2016. jan. 28. 07:05
Hasznos számodra ez a válasz?
 12/12 anonim ***** válasza:

Vagy ezt:


namespace ConsoleApplicationRef

{

class C { public int i; }


class Program

{

static void fnc(C c) { c.i = 2; }

static C cret(C c) { return c; }


static void Main(string[] args)

{

var c = new C();

c.i = 1;


var cc = c;

var cr = cret(cret(cret(cret(cc))));

var l = new List<C>();

l.Add(c);


fnc(c);


Console.WriteLine(c.i);

Console.WriteLine(cc.i);

Console.WriteLine(l[0].i);

Console.WriteLine(cr.i);


Console.ReadKey();

}

}

}

2016. jan. 28. 07:17
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!