私は、下のスクリプトの 'XSensitivity'の値を別のスクリプトから変更しようとしています。名前空間内のクラス内のfloatにアクセスする
using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
namespace UnityStandardAssets.Characters.FirstPerson
{
[Serializable]
public class HeadLook
{
public float XSensitivity = 8f;
public float YSensitivity = 8f;
public float MinimumX = -60F;
public float MaximumX = 60F;
public float xRotRaw;
public float yRotRaw;
public HeadLook (float rotX, float rotY)
{
rotX = XSensitivity;
rotY = YSensitivity;
}
// create an instance (an Object) of the HeadLook class
public HeadLook MyHeadLook = new HeadLook(8,8);
private float xRot;
private float yRot;
private float xRotation;
private float yRotation;
// ----------------------------
public void LookRotation(Transform character, Transform head)
{
yRotRaw = CrossPlatformInputManager.GetAxisRaw("HorizontalLook");
xRotRaw = CrossPlatformInputManager.GetAxisRaw("VerticalLook");
yRot = CrossPlatformInputManager.GetAxisRaw("HorizontalLook") * XSensitivity;
xRot = CrossPlatformInputManager.GetAxisRaw("VerticalLook") * YSensitivity;
yRotation -= yRot * 10 * Time.deltaTime;
yRotation = yRotation % 360;
xRotation += xRot * 10 * Time.deltaTime;
xRotation = Mathf.Clamp(xRotation, MinimumX, MaximumX);
head.localEulerAngles = new Vector3(-xRotation, -0, 0);
character.localEulerAngles = new Vector3(0, -yRotation, 0);
}
// ----------------------------
}
}
これはうまくいくと思いましたが、エラーが発生しました。
using UnityEngine;
using UnityStandardAssets.Characters.FirstPerson;
private HeadLook m_HeadLook;
void Awake()
{
m_HeadLook = GetComponent<HeadLook>();
sensitivitySlider.value = m_HeadLook.MyHeadLook.XSensitivity;
}
私が手にエラーが.. ArgumentExceptionがある:GetComponentはMonoBehaviourまたはコンポーネントから要求されたコンポーネントのHeadLook "派生することを必要とするか、またはインタフェースです。
ありがとうございました。
クラスは 'MonoBehaviour'から派生しないので、コンポーネントではないので、そのコンポーネントを得ることができません。 'HeadLook'のインスタンスを含むスクリプトを探してみてください。 –
エラーが発生している行は次のとおりです。 m_HeadLook = GetComponent < HeadLook >(); –