質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

92.00%

  • C#

    3170questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    1439questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

スクリプトを用いてUnityのCinematicEffectのDepthOfField.csスクリプト内のパラメーターを変更したい。

受付中

回答 0

投稿 2017/04/19 21:35 ・編集 2017/04/19 21:36

  • 評価
  • クリップ 0
  • VIEW 43

Poi_Poi

score 3

前提・実現したいこと

スクリプトを用いてUnityのCinematicEffectのDepthOfField.csスクリプト内のパラメーターを変更したい。

具体的にはDepthOfField.csないの91~118行で宣言されている変数を変更したいです。下記のコードそ実行したところエラーメッセージが表示され、値を正常に取得できませんでした。

発生している問題・エラーメッセージ

ArgumentException: GetComponent requires that the requested component 'FocusSettings' derives from MonoBehaviour or Component or is an interface.
UnityEngine.GameObject.GetComponent[FocusSettings] () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/GameObjectBindings.gen.cs:38)
test.Start () (at Assets/Scripts/test.cs:17)

該当のソースコード

私の作成したコード

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityStandardAssets.CinematicEffects;



    public class test : MonoBehaviour
    {
    private DepthOfField.FocusSettings dof;
    public GameObject came;
    private float no;
        // Use this for initialization
        void Start()
        {
        no = 10.0f;
        dof = came.GetComponent<DepthOfField.FocusSettings>();

    }

        // Update is called once per frame
        void Update()
        {


        if (Input.GetKeyDown("z")==true)
            {
            dof.range = no;
            }
        }
    }

DepthOfField.csのコード(全文がのせられなかったので省略)

using UnityEngine;
using System;

namespace UnityStandardAssets.CinematicEffects
{


    [ExecuteInEditMode]
    [AddComponentMenu("Image Effects/Cinematic/Depth Of Field")]
    [RequireComponent(typeof(Camera))]
    public class DepthOfField : MonoBehaviour
    {


        #region Settings
        [Serializable]
        public struct GlobalSettings
        {
            [Tooltip("Allows to view where the blur will be applied. Yellow for near blur, blue for far blur.")]
            public bool visualizeFocus;

            [Tooltip("Setup mode. Use \"Advanced\" if you need more control on blur settings and/or want to use a bokeh texture. \"Explicit\" is the same as \"Advanced\" but makes use of \"Near Plane\" and \"Far Plane\" values instead of \"F-Stop\".")]
            public TweakMode tweakMode;

            [Tooltip("Quality presets. Use \"Custom\" for more advanced settings.")]
            public QualityPreset filteringQuality;

            [Tooltip("\"Circular\" is the fastest, followed by \"Hexagonal\" and \"Octogonal\".")]
            public ApertureShape apertureShape;

            [Range(0f, 179f), Tooltip("Rotates the aperture when working with \"Hexagonal\" and \"Ortogonal\".")]
            public float apertureOrientation;

            public static GlobalSettings defaultSettings
            {
                get
                {
                    return new GlobalSettings
                    {
                        visualizeFocus = false,
                        tweakMode = TweakMode.Range,
                        filteringQuality = QualityPreset.High,
                        apertureShape = ApertureShape.Circular,
                        apertureOrientation = 0f
                    };
                }
            }
        }

        [Serializable]
        public struct QualitySettings
        {
            [Tooltip("Enable this to get smooth bokeh.")]
            public bool prefilterBlur;

            [Tooltip("Applies a median filter for even smoother bokeh.")]
            public FilterQuality medianFilter;

            [Tooltip("Dilates near blur over in focus area.")]
            public bool dilateNearBlur;

            public static QualitySettings[] presetQualitySettings =
            {
                // Low
                new QualitySettings
                {
                    prefilterBlur = false,
                    medianFilter = FilterQuality.None,
                    dilateNearBlur = false
                },

                // Medium
                new QualitySettings
                {
                    prefilterBlur = true,
                    medianFilter = FilterQuality.Normal,
                    dilateNearBlur = false
                },

                // High
                new QualitySettings
                {
                    prefilterBlur = true,
                    medianFilter = FilterQuality.High,
                    dilateNearBlur = true
                }
            };
        }

        [Serializable]
        public struct FocusSettings
        {
            [Tooltip("Auto-focus on a selected transform.")]
            public Transform transform;

            [Min(0f), Tooltip("Focus distance (in world units).")]
            public float focusPlane;

            [Min(0.1f), Tooltip("Focus range (in world units). The focus plane is located in the center of the range.")]
            public float range;

            [Min(0f), Tooltip("Near focus distance (in world units).")]
            public float nearPlane;

            [Min(0f), Tooltip("Near blur falloff (in world units).")]
            public float nearFalloff;

            [Min(0f), Tooltip("Far focus distance (in world units).")]
            public float farPlane;

            [Min(0f), Tooltip("Far blur falloff (in world units).")]
            public float farFalloff;

            [Range(0f, kMaxBlur), Tooltip("Maximum blur radius for the near plane.")]
            public float nearBlurRadius;

            [Range(0f, kMaxBlur), Tooltip("Maximum blur radius for the far plane.")]
            public float farBlurRadius;

            public static FocusSettings defaultSettings
            {
                get
                {
                    return new FocusSettings
                    {
                        transform = null,
                        focusPlane = 20f,
                        range = 35f,
                        nearPlane = 2.5f,
                        nearFalloff = 15f,
                        farPlane = 37.5f,
                        farFalloff = 50f,
                        nearBlurRadius = 15f,
                        farBlurRadius = 20f
                    };
                }
            }
        }


    }
}
  • 気になる質問をクリップする

    クリップした質問に回答があった場合に通知・メールを受け取ることができます。

    クリップした質問はマイページの「クリップ」タブからいつでも見ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

92.00%

関連した質問

同じタグがついた質問を見る

  • C#

    3170questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    1439questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

閲覧数の多いC#の質問

  • トップ
  • C#に関する質問
  • スクリプトを用いてUnityのCinematicEffectのDepthOfField.csスクリプト内のパラメーターを変更したい。