2019-05-30 18:41:23 +08:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections;
|
2019-05-19 23:14:47 +08:00
|
|
|
|
using System.Collections.Generic;
|
2020-04-15 14:23:23 +08:00
|
|
|
|
using System.IO;
|
2020-04-19 02:38:30 +08:00
|
|
|
|
using System.Text;
|
2019-05-30 18:41:23 +08:00
|
|
|
|
using System.Threading;
|
2020-04-18 04:07:59 +08:00
|
|
|
|
using System.Threading.Tasks;
|
2019-05-19 23:14:47 +08:00
|
|
|
|
using UniRx.Async;
|
|
|
|
|
using UnityEngine;
|
2019-05-30 18:41:23 +08:00
|
|
|
|
using UnityEngine.Networking;
|
|
|
|
|
using UnityEngine.UI;
|
2019-05-19 23:14:47 +08:00
|
|
|
|
|
|
|
|
|
public class SandboxMain : MonoBehaviour
|
|
|
|
|
{
|
2019-05-30 18:41:23 +08:00
|
|
|
|
public Button okButton;
|
|
|
|
|
public Button cancelButton;
|
2020-04-18 04:07:59 +08:00
|
|
|
|
public Text text;
|
|
|
|
|
|
2019-05-30 18:41:23 +08:00
|
|
|
|
CancellationTokenSource cts;
|
2019-05-19 23:14:47 +08:00
|
|
|
|
|
2020-04-19 02:24:53 +08:00
|
|
|
|
UniTaskCompletionSource ucs;
|
2020-04-18 04:07:59 +08:00
|
|
|
|
|
|
|
|
|
void Start()
|
2019-05-19 23:14:47 +08:00
|
|
|
|
{
|
2020-04-18 04:07:59 +08:00
|
|
|
|
// Setup unobserverd tskexception handling
|
|
|
|
|
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
|
|
|
|
|
|
|
|
|
|
// Optional: disable ExecutionContext if you don't use AsyncLocal.
|
|
|
|
|
//if (!ExecutionContext.IsFlowSuppressed())
|
|
|
|
|
//{
|
|
|
|
|
// ExecutionContext.SuppressFlow();
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//// Optional: disable SynchronizationContext(to boostup performance) if you completely use UniTask only
|
|
|
|
|
//SynchronizationContext.SetSynchronizationContext(null);
|
|
|
|
|
|
|
|
|
|
// -----
|
|
|
|
|
|
|
|
|
|
Application.logMessageReceived += Application_logMessageReceived;
|
|
|
|
|
|
|
|
|
|
|
2020-04-19 02:24:53 +08:00
|
|
|
|
ucs = new UniTaskCompletionSource();
|
2020-04-18 04:07:59 +08:00
|
|
|
|
|
2020-04-18 21:11:40 +08:00
|
|
|
|
okButton.onClick.AddListener(async () =>
|
2020-04-18 04:07:59 +08:00
|
|
|
|
{
|
2020-04-18 21:11:40 +08:00
|
|
|
|
await InnerAsync(false);
|
|
|
|
|
});
|
2020-04-18 04:07:59 +08:00
|
|
|
|
|
|
|
|
|
cancelButton.onClick.AddListener(async () =>
|
|
|
|
|
{
|
|
|
|
|
text.text = "";
|
|
|
|
|
|
|
|
|
|
ucs.SetResult();
|
|
|
|
|
|
|
|
|
|
await ucs.Task;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Application_logMessageReceived(string condition, string stackTrace, LogType type)
|
|
|
|
|
{
|
|
|
|
|
text.text += "\n" + condition;
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-19 02:24:53 +08:00
|
|
|
|
async UniTask OuterAsync(bool b)
|
2020-04-18 04:07:59 +08:00
|
|
|
|
{
|
|
|
|
|
UnityEngine.Debug.Log("START OUTER");
|
|
|
|
|
|
|
|
|
|
await InnerAsync(b);
|
|
|
|
|
await InnerAsync(b);
|
|
|
|
|
|
|
|
|
|
UnityEngine.Debug.Log("END OUTER");
|
|
|
|
|
|
|
|
|
|
// throw new InvalidOperationException("NAZO ERROR!?"); // error!?
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-19 02:24:53 +08:00
|
|
|
|
async UniTask InnerAsync(bool b)
|
2020-04-18 04:07:59 +08:00
|
|
|
|
{
|
|
|
|
|
if (b)
|
|
|
|
|
{
|
|
|
|
|
UnityEngine.Debug.Log("Start delay:" + Time.frameCount);
|
2020-04-19 02:24:53 +08:00
|
|
|
|
await UniTask.DelayFrame(60);
|
2020-04-18 04:07:59 +08:00
|
|
|
|
UnityEngine.Debug.Log("End delay:" + Time.frameCount);
|
2020-04-19 02:24:53 +08:00
|
|
|
|
await UniTask.DelayFrame(60);
|
2020-04-18 04:07:59 +08:00
|
|
|
|
UnityEngine.Debug.Log("Onemore end delay:" + Time.frameCount);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2020-04-18 21:11:40 +08:00
|
|
|
|
UnityEngine.Debug.Log("Empty END");
|
|
|
|
|
throw new InvalidOperationException("FOOBARBAZ");
|
2020-04-18 04:07:59 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2019-05-30 18:41:23 +08:00
|
|
|
|
|
2020-04-15 14:23:23 +08:00
|
|
|
|
|
2020-04-18 04:07:59 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
|
|
|
|
|
{
|
|
|
|
|
// e.SetObserved();
|
|
|
|
|
// or other custom write code.
|
|
|
|
|
UnityEngine.Debug.LogError("Unobserved:" + e.Exception.ToString());
|
2019-05-19 23:14:47 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2019-05-30 18:41:23 +08:00
|
|
|
|
|
2020-04-19 02:38:30 +08:00
|
|
|
|
public class ShowPlayerLoop
|
|
|
|
|
{
|
|
|
|
|
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
|
|
|
|
static void Init()
|
|
|
|
|
{
|
|
|
|
|
var playerLoop = UnityEngine.LowLevel.PlayerLoop.GetDefaultPlayerLoop();
|
|
|
|
|
|
|
|
|
|
var sb = new StringBuilder();
|
|
|
|
|
sb.AppendLine("Default Playerloop List");
|
|
|
|
|
foreach (var header in playerLoop.subSystemList)
|
|
|
|
|
{
|
|
|
|
|
sb.AppendFormat("------{0}------", header.type.Name);
|
|
|
|
|
sb.AppendLine();
|
|
|
|
|
foreach (var subSystem in header.subSystemList)
|
|
|
|
|
{
|
|
|
|
|
sb.AppendFormat("{0}.{1}", header.type.Name, subSystem.type.Name);
|
|
|
|
|
sb.AppendLine();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
UnityEngine.Debug.Log(sb.ToString());
|
|
|
|
|
}
|
|
|
|
|
}
|