示例#1
0
    private void SetOnTriggerEnterAction(string side)
    {
        var answer = set.transform.FindChildRecursive(side + "Answer");
        var box    = answer.GetComponent <BoxCollider>();

        box.OnTriggerEnterAsObservable()
        .Where(_ => _.gameObject.name == "Plane")
        .Subscribe(_ =>
        {
            throughCheckerCancellationTokenSource.Cancel();

            var isCorrect = questionController.CheckAnswer(ConvertSideToIndex(side));
            if (isCorrect)
            {
                answer.FindChildRecursive("Ring").GetComponent <Ring>().OnCorrect();
            }
            else
            {
                answer.FindChildRecursive("Ring").GetComponent <Ring>().OnWrong();
            }

            // ここで Destory したほうがいいが、CheckAnswer の後、非同期で問題生成、表示までやると、
            // ここの Destory より早く ↑ の処理が終わってしまう問題があり、いったんステイした。
            // todo: Destroy(set);
        });
    }