Ejemplo n.º 1
0
    //previewの用意
    private void previewSetup()
    {
        previewObject = expansion.GetBuiltObject((StageGenerator.Built)previewNumber);

        //previewObject.hideFlags = HideFlags.HideAndDontSave;
        previewObject.SetActive(true);
        var flags        = BindingFlags.Static | BindingFlags.NonPublic;
        var propInfo     = typeof(Camera).GetProperty("PreviewCullingLayer", flags);
        int previewLayer = (int)propInfo.GetValue(null, new object[0]);

        previewRenderUtility = new PreviewRenderUtility(true);
        previewRenderUtility.AddSingleGO(previewObject);
        //FieldOfView を 30 にするとちょうどいい見た目になる
        previewRenderUtility.cameraFieldOfView = 30f;
        //必要に応じて nearClipPlane と farClipPlane を設定
        previewRenderUtility.camera.nearClipPlane = 0.3f;
        previewRenderUtility.camera.farClipPlane  = 1000;
        //previewLayer のみ表示する
        previewRenderUtility.camera.cullingMask = 1 << previewLayer;

        var previewCamera = previewRenderUtility.camera;

        previewCamera.transform.position = previewObject.transform.position + new Vector3(2.5f, 2.5f, -5);
        previewCamera.transform.LookAt(previewObject.transform);
        previewCamera.clearFlags      = CameraClearFlags.Skybox;
        previewCamera.backgroundColor = new Color(0.9f, 0.9f, 0.9f);

        previewObject.layer = previewLayer;
        foreach (Transform transform in previewObject.transform)
        {
            transform.gameObject.layer = previewLayer;
        }
    }