我试图从启动时访问附加到我的mainPlayer对象的ThirdPersonCharacter脚本(具体地说是isPoweredUp
变量)。从另一个对象访问变量
目标是当玩家碰撞加电,因为它标记isPoweredUp
,然后摧毁通电对象。
这是我迄今所做的:
using UnityEngine;
using System.Collections;
public class pickUp: MonoBehaviour
{
public GameObject mainPlayer;
public GameObject pickupPrize;
public GameObject playerScript;
private ThirdPersonCharacter thirdPersonCharacter;
void Awake() {
mainPlayer = GameObject.FindGameObjectWithTag("Player");
}
void Start()
{
pickupPrize = GameObject.FindGameObjectWithTag("Pickup");
thirdPersonCharacter = mainPlayer.GetComponent<ThirdPersonCharacter>();
}
void OnTriggerStay(Collider thePlayer){
{
thirdPersonCharacter.isPoweredUp = true;
Destroy(pickupPrize);
}
}
}
在我mainPlayer
对象,我有一个名为isPoweredUp
公共变量,当前设置为false
。
当我尝试运行此我得到以下错误:
The type or namespace name ThirdPersonCharacter could not be found
我在做什么错在这里?
编辑:
这是attatched我mainPlayer游戏对象的脚本ThirdPersonCharacter:
Using UnityEngine;
namespace UnityStandardAssets.Characters.ThirdPerson
{
[RequireComponent(typeof(Rigidbody))]
[RequireComponent(typeof(CapsuleCollider))]
[RequireComponent(typeof(Animator))]
public class ThirdPersonCharacter : MonoBehaviour
{
[SerializeField] float m_MovingTurnSpeed = 360;
[SerializeField] float m_StationaryTurnSpeed = 180;
[SerializeField] float m_JumpPower = 12f;
[Range(1f, 4f)][SerializeField] float m_GravityMultiplier = 2f;
[SerializeField] float m_RunCycleLegOffset = 0.2f; 6
[SerializeField] float m_MoveSpeedMultiplier = 1f;
[SerializeField] float m_AnimSpeedMultiplier = 1f;
[SerializeField] float m_GroundCheckDistance = 0.1f;
Rigidbody m_Rigidbody;
Animator m_Animator;
bool m_IsGrounded;
float m_OrigGroundCheckDistance;
const float k_Half = 0.5f;
float m_TurnAmount;
float m_ForwardAmount;
Vector3 m_GroundNormal;
float m_CapsuleHeight;
Vector3 m_CapsuleCenter;
CapsuleCollider m_Capsule;
bool m_Crouching;
public bool isPoweredUp;
...
}
}
_“在我的mainPlayer对象上,我有一个名为isPoweredUp的公共变量” - 您发布的代码似乎与该声明相矛盾。在任何情况下,您引用的错误消息通常会带有后半部分:_“(您是否缺少使用指令或程序集引用?)”_。你也是?该类型在哪里定义?你为什么认为你使用它的代码应该知道这种类型? –
我添加了我尝试引用的代码,附加到我的mainPlayer对象 –
准确地说(当然这很重要!)*“在我的mainPlayer对象上,我有一个名为'isPoweredUp'的公共变量”* is错:从代码中看起来像你理解的,但要确保这句话应该是*“在我的mainPlayer'对象上,我有一个名为”ThirdPersonCharacter“的组件,名为isPoweredUp”*。 – 31eee384