Home>

I tried to refer to another script using GetComponent<>(), but I get the following error and cannot refer to it.

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
Corresponding source code

When I added the code and wrote GetComponent in the script of "ThirdPersonUserControl" included in Standard Assets, this error occurred and I could not refer to it.
The line where the error occurred is the top line in FixedUpdate ().
I want to refer to a script called "Fixed Joystick", but I can't.

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 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 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;
        }
    }
}
What I tried

I can somehow understand that the namespace makes it impossible to refer to it, but I don't know the specifics at all.
"Unable to reference Unity namespace script"
I tried searching for it, but I didn't understand.

"Using namespace name"

If i write, you will be able to refer to variables in the specified namespace, but this time it was not the same problem.
I was able to refer to "Fixed Joystick" without any problem from the newly created script without namespace setting.

Please let me know if anyone can understand why the "ThirdPersonUserControl" script can no longer be referenced.

Supplementary information (FW/tool version, etc.)

Please provide more detailed information here.

  • Answer # 1

    Another question I saw a long time ago was "I want to make MonoBehavior inheritance Photon.MonoBehavior inheritance, but I get an error" or "I want the script of FirstPersonController to refer to the value!" had.ThirdPersonUserControlShould be a Standard Assets script, so maybe these cases apply?

    Postscript

    ifFixedJoystickIf is pointing to what is included in the Joystick Pack, put the "Joystick Pack" folder in the project in the "Plugins" folder (or create a new one if not), and then "Assets"->"Plugins"->" If you make a folder structure such as "Joystick Pack" → ...ThirdPersonUserControlAt the innerFixedJoystickI think you will be able to see.