LoginSignup
2
0

More than 3 years have passed since last update.

【Unity】コンポーネントの有効化/無効化をボタン押下で切り替える

Posted at

※ 初心者向け記事です。

はじめに

ホラーゲームで、暗い部屋で懐中電灯つけたり、スイッチ押したら電球がついたりするギミックがよくあると思います。
それをどうやって実装するのか調べただけの記事です。

本記事では、懐中電灯を実装する例で進めます。

動作確認環境

  • Windows 10
  • Unity 2018.2.21f Personal

事前準備

3Dで新規プロジェクトを作成します。
次に、Hospital Horror Pack をアセットストアからImportします。

image.png

このAssetに含まれているDemoSceneに懐中電灯を追加してみます。

image.png

エラー解消したい場合

Importすると、下記のようなエラーが発生している状態になりました。

Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs(91,34): error CS0619: `UnityEditor.BuildTargetGroup.WebPlayer' is obsolete: `WebPlayer was removed in 5.4, consider using WebGL'

91行目は、コメントアウトでOKです。(たぶん)

実装方法

Lightを追加

はじめに懐中電灯のコンポーネントを追加します。
Hospital Horror PackのSceneでは、Cameraは「FPSController」→「FirstPersonCharacter」に含まれています。
Add Componentボタンを押下して、Lightを追加します。

TypeはSpot、
RangeとSpot Angleは、50とします。
もちろん絶対に50にしろということではなく、Sceneに合わせて値を調整してください。

image.png

Buttonを追加

つぎにButtonを追加します。
Hierarchyタブで右クリックして、「UI」→「Button」を押下します。
そうすると、CanvasとButtonが追加されると思います。
Gameタブを見ながら、ボタンを配置を変更してください。

image.png

Scriptを追加

つきはScriptを用意します。
パスはどこでもいいです。
筆者はScriptsフォルダを新規作成して、そこに作成したcsファイルを配置しています。

命名以外は、ほぼUnity公式のコピペです。

公式では Update() 内に実装しています。
今回はボタンを押下をトリガーにするため、 OnClickXXX() を作成、実装します。

SpotLightController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SpotLightController : MonoBehaviour {

    private Light spotLight;  // ON/OFFするライト

    // Use this for initialization
    void Start ()
    {
        spotLight = GetComponent<Light>();
    }

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

    }

    public void OnClickLightButton()
    {
        spotLight.enabled = !spotLight.enabled;
    }
}

Scriptをアタッチ/イベントを設定

FirstPersonCharacterに、さきほど作成したScriptをアタッチします。

image.png

最後に、Buttonの On Click() 項目を設定します。
スクショの通りに設定すればOKです。

image.png

これでボタンを押下して、懐中電灯のLightがON/OFFできればOKです。

参考文献

コンポーネントの有効化と無効化 - Unity

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0