统一3d c#编译器错误CS1061扩展方法

时间:2017-04-30 16:35:01

标签: c# compiler-errors

我有一个关于统一的项目,在我把代码放在上面后,当我使用这个C#桥接代码行时,我在统一上出现了这个错误

 Assets/Third Person Controller/Integrations/Adventure Creator/AdventureCreatorControllerBridge.cs(81,37): error CS1061: Type `Opsive.ThirdPersonController.ControllerHandler' does not contain a definition for `InitializeCamera' and no extension method `InitializeCamera' of type `Opsive.ThirdPersonController.ControllerHandler' could be found (are you missing a using directive or an assembly reference?

任何人都可以帮助我解决这个问题我是C#编码的新手,所以感谢您的帮助

using UnityEngine;
using AC;

namespace Opsive.ThirdPersonController.ThirdParty.AdventureCreator
{
    /// <summary>
    /// Acts as a bridge between the Third Person Controller and Adventure Creator. Assign this component to the same component that
    /// the ControllerHandler and Adventure Creator Player component is assigned to.
    /// </summary>
    public class AdventureCreatorControllerBridge : MonoBehaviour
    {
        // Component references
        private ControllerHandler m_ControllerHandler;
        private Char m_AdventureCreatorController;

        // Internal variables
        private bool m_CanBeDirectControlled;

        /// <summary>
        /// Cache the component references.
        /// </summary>
        private void Awake()
        {
            m_ControllerHandler = GetComponent<ControllerHandler>();
            m_AdventureCreatorController = GetComponent<Char>();
            m_CanBeDirectControlled = !m_AdventureCreatorController.CanBeDirectControlled();
        }

        /// <summary>
        /// Initialize the enabled state of the controllers.
        /// </summary>
        private void Start()
        {
            Initialize();
        }

        /// <summary>
        /// Initializes the controller and camera components to point to the new Adventure Creator character.
        /// </summary>
        private void Initialize()
        {
            UpdateEnabledState();

            // Assign the character to the camera after the character has been spawned by Adventure Creator.
            var cameraController = GameObject.FindObjectOfType<CameraController>();
            if (cameraController != null) {
                cameraController.Character = gameObject;
            }
        }

        /// <summary>
        /// Enable or disable the controller handler based on if the Adventure Creator controller can be directly controlled.
        /// </summary>
        private void Update()
        {
            if (m_CanBeDirectControlled != m_AdventureCreatorController.CanBeDirectControlled()) {
                UpdateEnabledState();
            }
        }

        /// <summary>
        /// The direct controlled status has changed so the controller's enabled state should reflect that change.
        /// </summary>
        private void UpdateEnabledState()
        {
            var canBeDirectControlled = m_AdventureCreatorController.CanBeDirectControlled();
            if (m_CanBeDirectControlled != canBeDirectControlled) {
                m_CanBeDirectControlled = canBeDirectControlled;
                m_AdventureCreatorController.enabled = !canBeDirectControlled;
                EventHandler.ExecuteEvent(gameObject, "OnAllowGameplayInput", canBeDirectControlled);
            }
        }

        /// <summary>
        /// Adventure Creator's character persists throughout the scenes using DontDestroyOnLoad. Force the reinitialization of the necessary variables.
        /// </summary>
        private void OnLevelWasLoaded()
        {
            m_CanBeDirectControlled = false;
            EventHandler.ExecuteEvent(gameObject, "OnAllowGameplayInput", false);
            if (m_ControllerHandler.InitializeCamera()) {
                Initialize();

                UpdateEnabledState();
            }
        }
    }
}

ControllerHandler当然是:

using Opsive.ThirdPersonController.Abilities;
using Opsive.ThirdPersonController.Input;
using System;
using System.Collections.Generic;
using UnityEngine;

namespace Opsive.ThirdPersonController
{
    [RequireComponent(typeof(RigidbodyCharacterController))]
    public class ControllerHandler : MonoBehaviour
    {
        private enum AimType
        {
            Down,
            Toggle,
            None
        }

        [SerializeField, Tooltip("Specifies if the character should aim when the button is down, toggled, or not at all")]
        private ControllerHandler.AimType m_AimType;

        private float m_HorizontalMovement;

        private float m_ForwardMovement;

        private Quaternion m_LookRotation;

        private bool m_AllowGameplayInput = true;

        private List<string> m_AbilityInputName;

        private List<string> m_AbilityInputEvent;

        private SharedMethod<bool> m_IndependentLook;

        private GameObject m_GameObject;

        private Transform m_Transform;

        private RigidbodyCharacterController m_Controller;

        private PlayerInput m_PlayerInput;

        private Camera m_Camera;

        private Transform m_CameraTransform;

        private void Awake()
        {
            this.m_GameObject = base.get_gameObject();
            this.m_Transform = base.get_transform();
            this.m_Controller = base.GetComponent<RigidbodyCharacterController>();
            this.m_PlayerInput = base.GetComponent<PlayerInput>();
        }

        private void OnEnable()
        {
            this.m_Controller.RootMotionForce = Vector3.get_zero();
            this.m_Controller.RootMotionRotation = Quaternion.get_identity();
            EventHandler.RegisterEvent(this.m_GameObject, "OnDeath", new Action(this.OnDeath));
        }

        private void OnDisable()
        {
            EventHandler.UnregisterEvent(this.m_GameObject, "OnDeath", new Action(this.OnDeath));
        }

        private void Start()
        {
            SharedManager.InitializeSharedFields(this.m_GameObject, this);
            EventHandler.RegisterEvent<bool>(this.m_GameObject, "OnAllowGameplayInput", new Action<bool>(this.AllowGameplayInput));
            EventHandler.RegisterEvent<string, string>(this.m_GameObject, "OnAbilityRegisterInput", new Action<string, string>(this.RegisterAbilityInput));
            EventHandler.RegisterEvent<string, string>(this.m_GameObject, "OnAbilityUnregisterInput", new Action<string, string>(this.UnregisterAbilityInput));
            bool flag = base.GetComponent<PlayerInput>() != null;
            if (flag)
            {
                this.InitializeCamera();
            }
            if (this.m_IndependentLook == null)
            {
                SharedManager.InitializeSharedFields(this.m_GameObject, this);
            }
            base.set_enabled(flag && this.m_Camera != null);
        }

        public bool InitializeCamera()
        {
            this.m_Camera = Utility.FindCamera();
            if (this.m_Camera == null)
            {
                return false;
            }
            this.m_CameraTransform = this.m_Camera.get_transform();
            CameraMonitor component;
            if ((component = this.m_Camera.GetComponent<CameraMonitor>()) != null && component.Character == null)
            {
                component.Character = base.get_gameObject();
            }
            return true;
        }

        private void Update()
        {
            if (!this.m_AllowGameplayInput)
            {
                return;
            }
            if (this.m_AimType == ControllerHandler.AimType.Down)
            {
                if (this.m_PlayerInput.GetButtonDown(Constants.AimInputName, true))
                {
                    this.m_Controller.Aim = true;
                }
                else if (this.m_Controller.Aim && !this.m_PlayerInput.GetButton(Constants.AimInputName, true))
                {
                    this.m_Controller.Aim = false;
                }
            }
            else if (this.m_AimType == ControllerHandler.AimType.Toggle && this.m_PlayerInput.GetButtonDown(Constants.AimInputName))
            {
                this.m_Controller.Aim = !this.m_Controller.Aiming;
            }
            if (this.m_AbilityInputName != null)
            {
                for (int i = 0; i < this.m_AbilityInputName.Count; i++)
                {
                    if (this.m_PlayerInput.GetButtonDown(this.m_AbilityInputName[i]))
                    {
                        EventHandler.ExecuteEvent(this.m_GameObject, this.m_AbilityInputEvent[i]);
                    }
                }
            }
            if (this.m_Controller.Abilities != null)
            {
                for (int j = 0; j < this.m_Controller.Abilities.Length; j++)
                {
                    if ((this.m_Controller.Abilities[j].StartType == Ability.AbilityStartType.ButtonDown || this.m_Controller.Abilities[j].StopType == Ability.AbilityStopType.ButtonToggle) && this.m_PlayerInput.GetButtonDown(this.m_Controller.Abilities[j].InputName))
                    {
                        if (!this.m_Controller.Abilities[j].IsActive && this.m_Controller.Abilities[j].StartType == Ability.AbilityStartType.ButtonDown)
                        {
                            this.m_Controller.TryStartAbility(this.m_Controller.Abilities[j]);
                        }
                        else if (this.m_Controller.Abilities[j].StopType == Ability.AbilityStopType.ButtonToggle)
                        {
                            this.m_Controller.TryStopAbility(this.m_Controller.Abilities[j]);
                        }
                    }
                    else if (this.m_Controller.Abilities[j].StopType == Ability.AbilityStopType.ButtonUp && this.m_PlayerInput.GetButtonUp(this.m_Controller.Abilities[j].InputName))
                    {
                        this.m_Controller.TryStopAbility(this.m_Controller.Abilities[j]);
                    }
                    else if (this.m_Controller.Abilities[j].StartType == Ability.AbilityStartType.DoublePress && this.m_PlayerInput.GetDoublePress(this.m_Controller.Abilities[j].InputName) && !this.m_Controller.Abilities[j].IsActive)
                    {
                        this.m_Controller.TryStartAbility(this.m_Controller.Abilities[j]);
                    }
                }
            }
        }

        private void FixedUpdate()
        {
            if (this.m_Controller.Movement == RigidbodyCharacterController.MovementType.PointClick)
            {
                return;
            }
            if (this.m_AllowGameplayInput)
            {
                this.m_HorizontalMovement = this.m_PlayerInput.GetAxisRaw(Constants.HorizontalInputName);
                this.m_ForwardMovement = this.m_PlayerInput.GetAxisRaw(Constants.ForwardInputName);
            }
            else
            {
                this.m_HorizontalMovement = (this.m_ForwardMovement = 0f);
            }
            if (this.m_Controller.Movement == RigidbodyCharacterController.MovementType.Combat || this.m_Controller.Movement == RigidbodyCharacterController.MovementType.Adventure)
            {
                this.m_LookRotation = this.m_CameraTransform.get_rotation();
            }
            else if (this.m_Controller.Movement == RigidbodyCharacterController.MovementType.TopDown || this.m_Controller.Movement == RigidbodyCharacterController.MovementType.Pseudo3D)
            {
                if (this.m_PlayerInput.UseMouse())
                {
                    Vector3 vector = this.m_PlayerInput.GetMousePosition() - this.m_Camera.WorldToScreenPoint(this.m_Transform.get_position() + this.m_Controller.CapsuleCollider.get_center());
                    vector.z = vector.y;
                    vector.y = 0f;
                    this.m_LookRotation = Quaternion.LookRotation(vector);
                }
                else
                {
                    Vector3 zero = Vector3.get_zero();
                    if (this.m_PlayerInput.IsControllerConnected())
                    {
                        zero.x = this.m_PlayerInput.GetAxisRaw(Constants.ControllerHorizontalRightThumbstick);
                        zero.z = -this.m_PlayerInput.GetAxisRaw(Constants.ControllerVerticalRightThumbstick);
                    }
                    else
                    {
                        zero.x = this.m_PlayerInput.GetAxisRaw(Constants.YawInputName);
                        zero.z = this.m_PlayerInput.GetAxisRaw(Constants.PitchInputName);
                    }
                    if (zero.get_sqrMagnitude() > 0.01f)
                    {
                        this.m_LookRotation = Quaternion.LookRotation(zero);
                    }
                    else
                    {
                        this.m_LookRotation = this.m_Transform.get_rotation();
                    }
                }
            }
            else if (this.m_Controller.Movement == RigidbodyCharacterController.MovementType.RPG)
            {
                if (this.m_PlayerInput.GetButton(Constants.SecondaryDisableButtonName, true))
                {
                    this.m_LookRotation = this.m_CameraTransform.get_rotation();
                    if (this.m_PlayerInput.GetButton(Constants.PrimaryDisableButtonName, true))
                    {
                        this.m_ForwardMovement = 1f;
                    }
                }
                else if (!this.m_PlayerInput.GetButton(Constants.PrimaryDisableButtonName, true))
                {
                    if (this.m_ForwardMovement != 0f || this.m_HorizontalMovement != 0f)
                    {
                        this.m_LookRotation = this.m_CameraTransform.get_rotation();
                    }
                    this.m_HorizontalMovement = 0f;
                }
            }
            else if (this.m_Controller.Movement == RigidbodyCharacterController.MovementType.FourLegged)
            {
                this.m_LookRotation = this.m_CameraTransform.get_rotation();
                if (this.m_ForwardMovement < -0.01f)
                {
                    this.m_HorizontalMovement *= -1f;
                }
            }
            this.m_Controller.Move(this.m_HorizontalMovement, this.m_ForwardMovement, this.m_LookRotation);
        }

        private void OnDeath()
        {
            this.m_HorizontalMovement = (this.m_ForwardMovement = 0f);
            EventHandler.RegisterEvent(this.m_GameObject, "OnRespawn", new Action(this.OnRespawn));
            base.set_enabled(false);
        }

        private void OnRespawn()
        {
            EventHandler.UnregisterEvent(this.m_GameObject, "OnRespawn", new Action(this.OnRespawn));
            if (!this.m_IndependentLook.Invoke())
            {
                base.set_enabled(true);
            }
        }

        private void AllowGameplayInput(bool allow)
        {
            this.m_AllowGameplayInput = allow;
        }

        private void RegisterAbilityInput(string inputName, string eventName)
        {
            if (this.m_AbilityInputName == null)
            {
                this.m_AbilityInputName = new List<string>();
                this.m_AbilityInputEvent = new List<string>();
            }
            this.m_AbilityInputName.Add(inputName);
            this.m_AbilityInputEvent.Add(eventName);
        }

        private void UnregisterAbilityInput(string inputName, string eventName)
        {
            for (int i = this.m_AbilityInputName.Count - 1; i >= 0; i--)
            {
                if (inputName.Equals(this.m_AbilityInputName[i]) && eventName.Equals(this.m_AbilityInputEvent[i]))
                {
                    this.m_AbilityInputName.RemoveAt(i);
                    this.m_AbilityInputEvent.RemoveAt(i);
                    break;
                }
            }
        }
    }
}

0 个答案:

没有答案