我正在使用PhotonNetworking在Unity3D中开发我的第一个多人游戏。您可以将其视为2D竞技场游戏,基本上是" 2D中的守望者"。
我已经达到了玩家可以通过英雄菜单(可在产卵点访问)在不同英雄之间切换的程度。
这是通过以下方式实现的:
游戏开始:
<int, data>Dictionary
,其中&#34;数据&#34;是struct{int ID, healthpoints, weaponType...}
英雄转换:
通过调用RPC 来切换英雄,让每个人都知道英雄已被切换,并且获取值在 hero_data-dictionary的特定索引处 这似乎完美无瑕。
然而,每个英雄都有自己的武器(应该是英雄的儿童对象),我不知道切换武器应采取哪种方法。
事实:
int 'damage', 'range', 'magazine', 'shooting_frequency', 'splash_damage' ...
'damage', 'range', 'magazine' ...
开发不同的射击类型不是问题! 什么是切换武器的高效方法?
我已经想到了什么:
Weapon : Monobehaviour{}
virtual Shoot(){raycast-firing?}
继承类,例如:ProjectileShooting : Weapons{}
,override Shoot(){projectile instantiation?}
上述RPC&#34; SwitchHero&#34;可以包括有点像if(hero.weaponType = 1){ weaponObject.AddComponent<ProjectileShooting>(); }
或者Weapon.cs是否有实例化ProjectileShooting类的方法?
或者为每个英雄创建一个包含武器的数组? (我个人不喜欢这种方法,因为大约有10个英雄,但其中一些具有相同的武器类型,只有不同的伤害和杂志值)
您如何看待这些方法?你会如何设计一个多人(英雄+)武器开关?