MissingComponentException unity2D

时间:2016-04-15 18:50:49

标签: c# android unity3d unity5

我无法设置相机选项。当我玩游戏并加载另一个场景时,相机选项会发生变化。但是,当我为同一场景播放时,它正常工作!控制台说:

  

MissingComponentException:没有附加'Camera'   “Canvas”游戏对象,但脚本正试图访问它。

     

您可能需要将相机添加到游戏对象“画布”中。或者你的   脚本需要在使用之前检查组件是否已连接。“

这是我目前的剧本:

using UnityEngine;
using System.Collections;

public class PixelPerfectCamera : MonoBehaviour {

    public static float PixelsToUnits = 1f;
    public static float scale = 1f;

    public Vector2 nativeResolution = new Vector2(400, 160);


    void Awake()
    {

         var camera =  GetComponent<Camera>();


        if (camera.orthographic)
        {
            scale = Screen.height / nativeResolution.y;
            PixelsToUnits *= scale;
            camera.orthographicSize = (Screen.height / 2.0f) / PixelsToUnits;
        }
    }
}

3 个答案:

答案 0 :(得分:2)

没有将相机附加到PixelPerfectCamera脚本附加到的相同GameObject上。

如果场景中只有一台摄像机,请更改

var camera =  GetComponent<Camera>(); 

Camera camera = Camera.main; //Use the main camera

如果您的场景中有多个相机,请使用:

Camera camera = GameObject.Find("NameOfGameObjectCameraIsAttachedTo").GetComponent<Camera>(); //Use the main camera

您必须更改 NameOfGameObjectCameraIsAttachedTo到相机附加的 GameObject 名称。

答案 1 :(得分:0)

将脚本更改为:

using UnityEngine;
using System.Collections;

public class PixelPerfectCamera : MonoBehaviour {

    public static float PixelsToUnits = 1f;
    public static float scale = 1f;

    public Vector2 nativeResolution = new Vector2(400, 160);
    public Camera camera;

    void Awake()
    {
        if (camera.orthographic)
        {
            scale = Screen.height / nativeResolution.y;
            PixelsToUnits *= scale;
            camera.orthographicSize = (Screen.height / 2.0f) / PixelsToUnits;
        }
    }
}

然后将场景中的相机连接到此脚本的相机区域。

答案 2 :(得分:0)

你可能想看看RequireComponent,它没有要求,但它对这些问题有很大帮助。 http://docs.unity3d.com/ScriptReference/RequireComponent.html