我有一个关于统一的项目,在我把代码放在上面后,当我使用这个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;
}
}
}
}
}