我试图在仅支持横向模式的iPad应用程序中用瓷砖填充我的SKScene.在场景中我检测到h&w:
int h = [UIScreen mainScreen].bounds.size.height;
int w = [UIScreen mainScreen].bounds.size.width;
Run Code Online (Sandbox Code Playgroud)
不幸的是,发回的尺寸与他们需要的尺寸相反.在视图控制器或视图的内容中讨论此问题有很多主题,解决方案似乎是在viewWillAppear中检测屏幕大小,而不是在viewDidLoad中.但是,这似乎不是SKScenes的有效解决方案.
有什么建议?
Dog*_*fee 12
尝试,而不是使用viewDidLoad和使用它
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
SKView * skView = (SKView *)self.view;
if (!skView.scene) {
skView.showsFPS = YES;
skView.showsNodeCount = YES;
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
}
}
Run Code Online (Sandbox Code Playgroud)
all*_*tom 10
在布局处理程序中初始化场景没有意义.调整布局处理程序中的场景大小.(这就是它的用途.)
@implementation SGOMyScene
{
SKScene *scene;
}
- (void)viewDidLoad
{
[super viewDidLoad];
SKView *skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
scene = [SGOMyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[skView presentScene:scene];
}
- (void)viewWillLayoutSubviews
{
[super viewWillLayoutSubviews];
SKView *skView = (SKView *)self.view;
scene.size = skView.bounds.size;
}
Run Code Online (Sandbox Code Playgroud)
您的场景应该实现- (void)didChangeSize:(CGSize)oldSize将所有内容移动到正确的位置.
万岁,现在你的游戏也处理设备轮换.
| 归档时间: |
|
| 查看次数: |
2443 次 |
| 最近记录: |