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); }); }