前提・実現したいこと
GetComponent<>()を使って他のスクリプトを参照しようとしたのですが、下記のエラーが出て参照ができません。
発生している問題・エラーメッセージ
Severity Code Description Project File Line Suppression State Error CS0246 The type or namespace name 'FixedJoystick' could not be found (are you missing a using directive or an assembly reference?) Assembly-CSharp-firstpass D:\Unity GameProject\tutorial\SmartPhone UI Test\Assets\Standard Assets\Characters\ThirdPersonCharacter\Scripts\ThirdPersonUserControl.cs 51 Active
該当のソースコード
Standard Assetsに入っている「ThirdPersonUserControl」のスクリプトの中でコードを書き足してGetComponentを書いた所、今回のエラーが発生して参照ができませんでした。
エラーが発生した行は、FixedUpdate()内の一番上の行です。
「FixedJoystick」というスクリプトを参照したいのですができません。
using System; using UnityEngine; using UnityStandardAssets.CrossPlatformInput; namespace UnityStandardAssets.Characters.ThirdPerson { [RequireComponent(typeof (ThirdPersonCharacter))] public class ThirdPersonUserControl : MonoBehaviour { private ThirdPersonCharacter m_Character; // A reference to the ThirdPersonCharacter on the object private Transform m_Cam; // A reference to the main camera in the scenes transform private Vector3 m_CamForward; // The current forward direction of the camera private Vector3 m_Move; private bool m_Jump; // the world-relative desired move direction, calculated from the camForward and user input. [SerializeField] GameObject Joystick; private void Start() { // get the transform of the main camera if (Camera.main != null) { m_Cam = Camera.main.transform; } else { Debug.LogWarning( "Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.", gameObject); // we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them! } // get the third person character ( this should never be null due to require component ) m_Character = GetComponent<ThirdPersonCharacter>(); } private void Update() { if (!m_Jump) { m_Jump = CrossPlatformInputManager.GetButtonDown("Jump"); } } // Fixed update is called in sync with physics private void FixedUpdate() { float hoge = Joystick.GetComponent<FixedJoystick>().Vertical; // read inputs float h = CrossPlatformInputManager.GetAxis("Horizontal"); float v = CrossPlatformInputManager.GetAxis("Vertical"); bool crouch = Input.GetKey(KeyCode.C); // calculate move direction to pass to character if (m_Cam != null) { // calculate camera relative direction to move: m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized; m_Move = v*m_CamForward + h*m_Cam.right; } else { // we use world-relative directions in the case of no main camera m_Move = v*Vector3.forward + h*Vector3.right; } #if !MOBILE_INPUT // walk speed multiplier if (Input.GetKey(KeyCode.LeftShift)) m_Move *= 0.5f; #endif // pass all parameters to the character control script m_Character.Move(m_Move, crouch, m_Jump); m_Jump = false; } } }
試したこと
namespaceのせいで参照ができなくなっているのはなんとなくわかるのですが、具体的なことが全くわかりません。
「Unity namespace スクリプトを参照できない」
などと検索してみたのですがわかりませんでした。
「using namespaceの名前」
と書けば、指定したnamespaceの変数などを参照できるようになりますが、今回はこれと同じ問題ではありませんでした。
新しく作成した、namespaceを設定していないスクリプトからなら問題なく「FixedJoystick」を参照できました。
「ThirdPersonUserControl」スクリプトからは参照できなくなってしまう理由がわかる方がいたら教えて下さい。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/18 08:29