Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实施不同行为的最佳方式&x27;它使用相同的抽象_C#_Design Patterns_Unity3d - Fatal编程技术网

C# 实施不同行为的最佳方式&x27;它使用相同的抽象

C# 实施不同行为的最佳方式&x27;它使用相同的抽象,c#,design-patterns,unity3d,C#,Design Patterns,Unity3d,事实上,我正在开发一个基于unity的武器系统,你可以用三种不同的子弹安装一件武器,我有相同的子弹预制结构,但每种子弹的运动逻辑应该不同。我在使用GetComponent查找抽象脚本和接口时遇到问题,我正在寻找一个好的解决方案来实现这个架构。谢谢 public class BaseBullet : MonoBehaviour, IBullet { .... } interface IBullet { .. void shoot(vector2 direction); } public cla

事实上,我正在开发一个基于unity的武器系统,你可以用三种不同的子弹安装一件武器,我有相同的子弹预制结构,但每种子弹的运动逻辑应该不同。我在使用GetComponent查找抽象脚本和接口时遇到问题,我正在寻找一个好的解决方案来实现这个架构。谢谢

public class BaseBullet : MonoBehaviour, IBullet { .... } 
interface IBullet { .. void shoot(vector2 direction); } 
public class BaseWeapon : MonoBehaviour, IWeapon 
{ ... BaseBullet bullet1; BaseBullet bullet2; BaseBullet bullet3 } 

你的意思是你的移动逻辑取决于a>子弹种类和b>武器种类吗?策略模式将移动逻辑保存在每个子弹的单独策略中,工厂模式将获得正确的策略。是的,但只是在案例a中,应该取决于子弹种类,它的工作原理类似于武器的弹药类型。请发布您正在使用的代码。BaseBullet.cs公共类BaseBullet:monobhavior,IBullet{..}IBullet.cs接口IBullet{..void shoot(vector2方向);}basewiller.cs公共类basewiller:monobhavior,IWeapon{…基本子弹子弹子弹1;基本子弹子弹子弹2;基本子弹子弹子弹3}