コード例 #1
0
        private void CreateCourseController()
        {
            if (enforcedCourseController != null)
            {
                CurrentCourseController = enforcedCourseController;
            }
            else if (useCustomPrefab && customPrefab != null)
            {
                Instantiate(customPrefab);
                return;
            }

            ICourseController defaultCourseController = GetCourseControllerFromType();

            if (CurrentCourseController == null)
            {
                CurrentCourseController = defaultCourseController;
                if (CurrentCourseController == null)
                {
                    Debug.LogError("CourseControllerSetup was not configured properly.");
                    return;
                }
            }
            else
            {
                RemoveComponents(defaultCourseController.GetRequiredSetupComponents().Except(CurrentCourseController.GetRequiredSetupComponents()).ToList());
            }

            GameObject courseControllerPrefab = CurrentCourseController.GetCourseControllerPrefab();

            if (courseControllerPrefab != null)
            {
                Instantiate(CurrentCourseController.GetCourseControllerPrefab());
            }
        }
コード例 #2
0
            /// <summary>
            /// Workaround to set the focus to the CourseControllerSetup if it has missing components that are required by the CourseController.
            /// </summary>
            private static void SetupCourseController()
            {
                CourseControllerSetup setup = FindObjectOfType <CourseControllerSetup>();

                if (setup == null)
                {
                    return;
                }
                List <Type>       currentTypes            = setup.GetComponents <Component>().Select(c => c.GetType()).ToList();
                ICourseController courseController        = setup.GetCourseControllerFromType();
                bool courseControllerHasMissingComponents = courseController.GetRequiredSetupComponents().Except(currentTypes).Any();

                if (courseControllerHasMissingComponents)
                {
                    Selection.activeObject = setup;
                    Debug.LogWarning($"Automatically added missing required components to {setup}.");
                }
            }