Question by
importguru88 · Apr 18, 2016 at 07:53 PM ·
errordestroycontrollerload
I "m having some issues . How do I get the don't destroy on load to work in C# ?
Here is what I got so far :
using UnityEngine; using System.Collections; using CFInput; namespace Opsive.ThirdPersonController.Input { ///
/// Acts as a common base class for Control Freak input. /// public class ControlFreakInput : PlayerInput {public static instance ThirdPersonController;
void Awake () { transform.parent = null; instance = this; DontDestroyOnLoad(gameObject);
}
private bool m_AllowGameplayInput = true;
/// <summary>
/// Assign the static variables and initialize the default values.
/// </summary>
private void OnEnable()
{
s_PlayerInput = this;
}
/// <summary>
/// Register for any events that the handler should be aware of.
/// </summary>
private void Start()
{
EventHandler.RegisterEvent<bool>(gameObject, "OnAllowGameplayInput", AllowGameplayInput);
}
/// <summary>
/// Internal method to determine if the disabled button is down.
/// </summary>
/// <param name="primaryInput">Should the primary input be checked?</param>
/// <returns>True if the disabled button is down.</returns>
protected override bool IsDisabledButtonDownInternal(bool primaryInput)
{
return GetButton(primaryInput ? Constants.PrimaryDisableButtonName : Constants.SecondaryDisableButtonName, true);
}
/// <summary>
/// Internal method to return true if the button is being pressed.
/// </summary>
/// <param name="name">The name of the button.</param>
/// <returns>True of the button is being pressed.</returns>
protected override bool GetButtonInternal(string name, bool positiveAxis)
{
if (!m_AllowGameplayInput) {
return false;
}
return CFInput.GetButton(name);
}
/// <summary>
/// Internal method to return true if the button was pressed this frame. Will use the joystick axis if a joystick is connected.
/// </summary>
/// <param name="name">The name of the button.</param>
/// <param name="positiveAxis">If using a joystick, is the joystick axis positive?</param>
/// <returns>True if the button is pressed this frame.</returns>
protected override bool GetButtonDownInternal(string name, bool positiveAxis)
{
if (!m_AllowGameplayInput) {
return false;
}
return CFInput.GetButtonDown(name);
}
/// <summary>
/// Internal method to return true if the button was pressed this frame.
/// </summary>
/// <param name="name">The name of the button.</param>
/// <returns>True if the button is pressed this frame.</returns>
protected override bool GetButtonDownInternal(string name)
{
return CFInput.GetButtonDown(name);
}
/// <summary>
/// Internal method to return true if the button is up.
/// </summary>
/// <param name="name">The name of the button.</param>
/// <param name="useJoystick">Should the input be using the joystick if connected?</param>
/// <returns>True if the button is up.</returns>
protected override bool GetButtonUpInternal(string name, bool useJoystickAxis)
{
return CFInput.GetButtonUp(name);
}
/// <summary>
/// Internal method to return true if a double tap occurred.
/// </summary>
/// <returns>True if a double tap occurred.</returns>
protected override bool GetDoublePressInternal()
{
if (UnityEngine.Input.touchCount == 0) {
return false;
}
var touch = UnityEngine.Input.touches[0];
return touch.tapCount == 2;
}
/// <summary>
/// Internal method to return the value of the axis with the specified name.
/// </summary>
/// <param name="name">The name of the axis.</param>
/// <returns>The value of the axis.</returns>
protected override float GetAxisInternal(string name)
{
return CFInput.GetAxis(name);
}
/// <summary>
/// Internal method to return the value of the raw axis with the specified name.
/// </summary>
/// <param name="name">The name of the axis.</param>
/// <returns>The value of the raw axis.</returns>
protected override float GetAxisRawInternal(string name)
{
return CFInput.GetAxisRaw(name);
}
/// <summary>
/// Should the mouse be used?
/// </summary>
/// <returns>True if the mouse should be used.</returns>
protected override bool UseMouseInternal()
{
return false;
}
/// <summary>
/// Internal method to return the position of the mouse.
/// </summary>
/// <returns>The mouse position.</returns>
protected override Vector2 GetMousePositionInternal()
{
return CFInput.mousePosition;
}
/// <summary>
/// Is gameplay input allowed? An example of when it will not be allowed is when there is a fullscreen UI over the main camera.
/// </summary>
/// <param name="allow">True if gameplay is allowed.</param>
private void AllowGameplayInput(bool allow)
{
m_AllowGameplayInput = allow;
}
}
}
Comment