所以我正在 Unity 中处理一个项目,这突然弹出。
控制台错误是:
Assets/StandardAssets/Vehicles/Aircraft/Scripts/AeroplaneUserControl2Axis.cs(29,27): error CS0103: The name 'CrossPlatformInputManager' does not exist in the current context
以下是它所指的脚本:
using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
namespace UnityStandardAssets.Vehicles.Aeroplane
{
[RequireComponent(typeof (AeroplaneController))]
public class AeroplaneUserControl2Axis : MonoBehaviour
{
// these max angles are only used on mobile, due to the way pitch and roll input are handled
public float maxRollAngle = 80;
public float maxPitchAngle = 80;
// reference to the aeroplane that we're controlling
private AeroplaneController m_Aeroplane;
private void Awake()
{
// Set up the reference to the aeroplane controller.
m_Aeroplane = GetComponent<AeroplaneController>();
}
private void FixedUpdate()
{
// Read input for the pitch, yaw, roll and throttle of the aeroplane.
float roll = CrossPlatformInputManager.GetAxis("Horizontal");
float pitch = CrossPlatformInputManager.GetAxis("Vertical");
bool airBrakes = CrossPlatformInputManager.GetButton("Fire1");
// auto throttle up, or down if braking.
float throttle = airBrakes ? -1 : 1;
#if MOBILE_INPUT
AdjustInputForMobileControls(ref roll, ref pitch, ref throttle);
#endif
// Pass the input to the aeroplane
m_Aeroplane.Move(roll, pitch, 0, throttle, airBrakes);
}
private void AdjustInputForMobileControls(ref float roll, ref float pitch, ref float throttle)
{
// because mobile tilt is used for roll and pitch, we help out by
// assuming that a centered level device means the user
// wants to fly straight and level!
// this means on mobile, the input represents the *desired* roll angle of the aeroplane,
// and the roll input is calculated to achieve that.
// whereas on non-mobile, the input directly controls the roll of the aeroplane.
float intendedRollAngle = roll*maxRollAngle*Mathf.Deg2Rad;
float intendedPitchAngle = pitch*maxPitchAngle*Mathf.Deg2Rad;
roll = Mathf.Clamp((intendedRollAngle - m_Aeroplane.RollAngle), -1, 1);
pitch = Mathf.Clamp((intendedPitchAngle - m_Aeroplane.PitchAngle), -1, 1);
// similarly, the throttle axis input is considered to be the desired absolute value, not a relative change to current throttle.
float intendedThrottle = throttle*0.5f + 0.5f;
throttle = Mathf.Clamp(intendedThrottle - m_Aeroplane.Throttle, -1, 1);
}
}
}
遇到了类似的问题,通过简单地导入 Assets 就解决了。以下是步骤:
- 转到
Assets
->导入包
->CrossPlatformInput
- 单击
全部
(或您需要的那个)
- 点击
导入
我是一名优秀的程序员,十分优秀!