Hey tweakers,
ik ben nu in mijn multiplayer unity fps game op het punt aangekomen dat ik met entities bezig moet. Ik heb hier al bepaalde ideeën over:
Ik heb me bedacht dat dit op twee manieren kan.
Mijn vraag: Is het in mijn geval beter om interfaces te gebruiken, en zo ja waarom? (Zo nee, dan zou ik ook graag weten waarom niet
) Of is er misschien nog een betere manier om dit aan te pakken?
Bedankt voor je aandacht zover. Als er vragen zijn, dan beantwoord ik ze graag!
[Edit:]
Ik zie net de misspelling in de titel...
ik ben nu in mijn multiplayer unity fps game op het punt aangekomen dat ik met entities bezig moet. Ik heb hier al bepaalde ideeën over:
- Alle game objecten die maar enigzins met de server gesynchroniseerd moeten worden, zijn Entities.
- Een entity kan nog aanwezig zijn, maar dan als static gemarkeerd zijn. (Bijv. een muur die al kapot is, aangezien die geen verdere sync meer nodig heeft)
- Een entity is modulair opgebouwd. Sommigen hebben bijv. een health module, een andere heeft bijv. een selfdestruct mudule... Of beiden.
Ik heb me bedacht dat dit op twee manieren kan.
- Ik maak een een Module base class. Van deze class kan ik dan weer bijv. Health deriven.
Wat ik nu heb:
C#:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
public class Entity { public int Number; public EntityState State; public int Owner; public Module[] Modules; public Entity(int Number, EntityState State, int Owner, params Module[] Modules) { //... } public bool HasModule<T>() where T : Module { //... } public T GetModule<T>() where T : Module { //... } } public enum EntityState { Alive, Static } public class Module { public bool Active = true; } public class Location : Module { public Vector3 Position; public Vector3 Rotation; } public class Scaler : Module { public Vector3 Scale; } public class Health : Module { public float Current; public float Maximum; } public class DeSpawnTimer : Module { //... } public class Parent : Module { Entity Child; } public class Child : Module { Entity Parent; } public class GrenadeEntity : Entity { public GrenadeEntity() : base(0, EntityState.Alive, 0, Location, DespawnTimer) }
- In plaats van dat ik modules gebruik, gebruik ik interfaces.
C#:1 2 3 4
public class GrenadeEntity : Entity, ILocation, IDespawnTimer { //... }
Mijn vraag: Is het in mijn geval beter om interfaces te gebruiken, en zo ja waarom? (Zo nee, dan zou ik ook graag weten waarom niet
Bedankt voor je aandacht zover. Als er vragen zijn, dan beantwoord ik ze graag!
[Edit:]
Ik zie net de misspelling in de titel...

[ Voor 1% gewijzigd door diondokter op 05-08-2014 22:03 . Reden: Foutje in de code ]