使用iOS的NSNotificationCenter或Unity中的类似事件应用程序事件

时间:2014-12-05 08:34:24

标签: ios unity3d nsnotificationcenter

另一个答案可能是Unity中有任何类型的钩子对应于这些事件:

  • UIApplicationWillResignActiveNotification
  • UIApplicationDidBecomeActiveNotification

我可以在Unity中使用iOS的NSNotificationCenter吗?怎么样?我用谷歌搜索了一段时间但发现为零。

2 个答案:

答案 0 :(得分:0)

我认为这就是答案:http://docs.unity3d.com/ScriptReference/MonoBehaviour.OnApplicationFocus.html

OnApplicationFocus

但是,它至少在iOS上不起作用。似乎它是一个错误,将在Unity 4.6.1中修复...我使用4.6(4.6.0f3)

http://issuetracker.unity3d.com/issues/monobehaviour-dot-onapplicationfocus-not-supported-on-ios

答案 1 :(得分:0)

听起来你真正想要的是在调用一些委托方法时得到通知。为此,您可以编辑AppDelegate.m文件并添加一行代码,将消息传递回Unity游戏。我可以在这里给你一个通用的方法。

首先在根场景中创建一个GameObject,并附加一个脚本,其中包含您要调用的方法以及对DontDestroyOnLoad()的调用。同时在层次结构中为其提供一个您将在稍后需要的名称,例如 AppDelegateProxy

void Start() {
    DontDestroyOnLoad();
}

public void ApplicationWillResignActive(string message) {
    // Do whatever you want here, e.g. fire an event
}

接下来,在您应用的AppDelegate.m文件中,编辑您要传递给Unity的相关方法:

-(void)applicationWillResignActive:(UIApplication *)application {
    // Notify your game object that this event occurred
    UnitySendMessage("AppDelegateProxy", "ApplicationWillResignActive", "whatever you want here");
}

还有其他方法可以执行您想要的操作,但这是一种通用方法,可让您回复iOS应用中您想要的任何内容。您也可以使用此功能将通知也传递到应用程序中。只需在AppDelegate中设置一个监听器,并将通知传递给持久GameObject中的方法。