我想在iPad上创建一个双人游戏,但我真的不知道我该怎么做才对。我的概念就像两个玩家游戏的“水果忍者”(一个与其他游戏)。
我的意思是一个玩家将在viewcontrollerA中玩,另一个玩家将在viewcontrollerB中玩(这应该是从viewcontrollerA颠倒过来的。)
我该怎么办?我是否需要创建两个视图控制器并通过控制器包含显示,或者还有另一种更好的方法吗? 谢谢!
答案 0 :(得分:6)
在iOS5中,控制器有一种幸运的方式来接收方向事件,添加/删除回调,并将它们正确地插入到响应链中。所以如果你打算这样做,这是最好的方法。只要你不做傻事,比如将相同的视图添加到两个UIViewControllers就可以了。
为什么这样?我看到逻辑将游戏引擎放在主控制器上,编写客户端,将该客户端封装在子视图控制器上,并将其重用于两个玩家。
如果您觉得需要这样的东西,也可以使用嵌套控制器来封装复杂性。示例:一个用于与游戏引擎通信的界面,另一个用于屏幕从引擎获取事件。
UIViewController包含很容易。您需要阅读6种方法并了解所谓的方法。欢迎您阅读文档,但简而言之:
addChildViewController:
添加子视图控制器。您还需要手动添加子视图:[self.view addSubView:chieldVC.view];
。removeFromParentViewController
删除子视图控制器。transitionFromViewController...
替换视图或将视图移到前面。willMoveToParentViewController:
由addChildViewController:
自动调用。只有在要删除时才调用它(传递nil表示控制器变为孤立状态)。仅在需要自定义代码时才覆盖它。didMoveToParentViewController:
您必须在动画完成后addChildViewController
之后调用此项(或者如果没有动画立即调用它)。automaticallyForward...
。仅当您手动要转发旋转和外观调用时,才覆盖并返回NO。例如,要将一个控制器嵌套在另一个控制器中,请将子视图添加为常规视图,并按以下顺序调用addChildViewController:和didMoveToParentViewController:
// from the parent view controller
ChildViewController *child = [ChildViewController new];
[self addChildViewController:child];
[self.view addSubview:child.view];
[child didMoveToParentViewController:self];
答案 1 :(得分:1)
最好的方法是让一个根视图控制器成为整个屏幕,然后是每个玩家屏幕的两个子视图。您不希望嵌套视图控制器