我无法设置相机选项。当我玩游戏并加载另一个场景时,相机选项会发生变化。但是,当我为同一场景播放时,它正常工作!控制台说:
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;
}
}
}
答案 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