【问题标题】:Unity deploying to xcode in objective-C: how to delay launch screen in didFinishLaunching?Unity 在 Objective-C 中部署到 xcode:如何在 didFinishLaunching 中延迟启动屏幕?
【发布时间】:2016-05-10 23:29:54
【问题描述】:

我在 Unity 中创建了一个游戏,并通过为 Xcode 构建项目并从那里开始部署到 iPhone。 Unity 将其项目打包并在 Xcode 中为您生成 Objective-C 文件;

我过去曾与 Swift 合作过,并且总是延迟我的启动屏幕(我知道这是不好的做法,但我正在与希望在游戏开始前 3 秒显示初始屏幕而不只是短暂出现的人合作)在applicationDidFinishLaunching 方法中让应用程序sleep 持续几秒钟。我需要知道如何使用 Objective-c 生成的 Unity 项目来做到这一点-

我尝试将[NSThread sleepForTimeInterval:6.0]; 放入

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

我的 UnityAppController.mm 文件中的函数,虽然这似乎是正确的地方,但启动屏幕仍会显示一秒钟。

如何在 Xcode 中的统一项目中延迟启动?

【问题讨论】:

  • 更好的方法是让您的第一个视图控制器显示与初始屏幕相同的图像,然后在延迟后将其移动到您的下一个 VC
  • 我知道,但是由于 Unity 生成的文件数量等原因,一切都变得复杂了。如果这不起作用,我会尝试这种方法,但是您知道如何使用 sleepForTimeInterval 延迟启动画面吗?

标签: ios objective-c xcode unity3d


【解决方案1】:

其实你可以在 Unity 中实现这个请求。

在您的第一个场景中创建一个 2D 画布,然后像这样覆盖其他所有内容:

Render Mode: Screen Space - Overlay

将初始屏幕图像纹理类型更改为像这样的 Sprite

Texture Type: Sprite (2D and UI)

创建一个 UI 图像并将上面的精灵指定为源图像以覆盖整个屏幕

Source Image: SplashScreenImage

像这样在画布对象中创建一个启动脚本组件

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class CanvasBehaviour : MonoBehaviour 
{
    public Image backgroundImage;

    void Awake() {
        StartCoroutine(RemoveBackgroundImage());
    }

    private IEnumerator RemoveBackgroundImage() 
    {
        Debug.Log("Before Waiting 3 seconds");
        yield return new WaitForSeconds(3);
        backgroundImage.gameObject.SetActive(false);
        Destroy(backgroundImage);
    }
}

通过这样做,在启动屏幕之后,用户将只能看到相同的图像,因此他/她不会理解任何变化。

由于您不会通过休眠来阻塞 UI 线程,因此您可以在画布中显示一些基本动画和/或在背景图像后面准备您的场景。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多