Forum rules - please read before posting.

Skipping subtitles only

Is there a way to only skip subtitles when a button is pressed? As far as I know, the Skip ActionLst setting makes the entire cutscene skip instantaneously but I only want the dialogue to skip dialogue by dialogue.

Is checking for Input.GetDown() and then calling SkipSpeech continually the best way?

«1

Comments

  • Check Subtitles can be skipped? in the Speech Manager. You can then skip speech with mouse clicks, or by invoking the SkipSpeech input.

  • Already done that. I was looking for something where I can press and hold a button to skip subtitles continuously. As far as I know with "Subtitles can be skipped? option, I have to press the left mouse button again and again.

  • See the Manual's "Remapping inputs" chapter. You can override AC's InputGetButtonDown function to have it return true when the "SkipSpeech" is held down, not just pressed (i.e. first frame).

    Something like:

    using UnityEngine;
    using System.Collections;
    using AC;
    
    public class InputOverride : MonoBehaviour
    {
    
        void Start ()
        {
            KickStarter.playerInput.InputGetButtonDownDelegate = CustomGetButtonDown;
        }
    
        private bool CustomGetButtonDown (string buttonName)
        {
            if (buttonName == "SkipSpeech")
            {
                return Input.GetKey (buttonName);
            }
    
            return Input.GetButtonDown (buttonName);
        }
    
    }
    
  • Finally got around to trying this.
    The game keeps crashing with ArgumentException: Input Button InteractionA is not setup.
    To change the input settings use: Edit -> Project Settings -> Input SkipManager.CustomGetButtonDown

    If I add one button, the game crashes again, but complains about a different button not being setup. (first it was ToggleCursor, then it was EndCutscene and now it's this)

  • You can either define the required inputs (they're listed in the Settings Manager), or wrap a try/catch statement around it, i.e.:

    try
    {
        return Input.GetButtonDown (buttonName);
    }
    catch {}
    
  • edited October 2021

    Hey, I'm trying to do the same thing, skipping subtitles fast when the space button is held down. But I'm having some errors. I tried defining inputs and wrapping a try/catch. Can you help me? I'm a noob and artist (just to know). :smile:

    I'm using V1.73.6

    https://ibb.co/LCHSpsS
    https://ibb.co/qx0NqkM
    https://ibb.co/WfDh7pk
    https://ibb.co/WyPM6Np
    https://ibb.co/vQ0Ky6G

    Thank you!

  • Replace:

    return Input.GetButtonDown (buttonName);
    

    with:

    try
    {
        return Input.GetButtonDown (buttonName);
    }
    catch {}
    
  • edited October 2021

    Thank you for your quick response Chris.

    Like this?

    void Start ()
    {
        KickStarter.playerInput.InputGetButtonDownDelegate = CustomGetButtonDown;
    }
    
    private bool CustomGetButtonDown (string buttonName)
    {
        if (buttonName == "SkipSpeech")
        {
            return Input.GetKey (buttonName);
        }
    
        try
        {
            return Input.GetButtonDown (buttonName)
        }
        catch {}
    }
    

    I have an error now: "not all code paths return a value". :neutral:

  • Add "return false;" just below the "catch" line.

  • edited October 2021

    Hm, now I have two errors. Sorry, I don't know what I'm doing...

    https://ibb.co/ZS1Yk91

    void Start ()
    {
    KickStarter.playerInput.InputGetButtonDownDelegate = CustomGetButtonDown;
    }

    private bool CustomGetButtonDown (string buttonName)
    {
    if (buttonName == "SkipSpeech")
    {
    return Input.GetKey (buttonName);
    }

    try
    {
        return Input.GetButtonDown (buttonName)
    }
    catch {}
    return false
    

    }

  • You're just missing the semicolon after the false:

    return false;
    
  • Thank you, and sorry for wasting your time :smiley:

  • Hi,
    I've managed to get the text to skip via a button (currently set to Left control but will move this to space bar) However, I wanted this to automatically skip speech until a conversation choice is to be made.
    I've tried putting the script into a blank C# script but keep getting an error pop up.
    InputOverride.cs(21,56): error CS1002: ; expected.

    I've got very limited coding knowledge and next to none in Unity. I assume I'm missing a ; somewhere. This is the code I'm using.

    using UnityEngine;
    using System.Collections;
    using AC;
    
    public class InputOverride : MonoBehaviour
    {
    
        void Start ()
        {
            KickStarter.playerInput.InputGetButtonDownDelegate = CustomGetButtonDown;
        }
    
        private bool CustomGetButtonDown (string buttonName)
        {
            if (buttonName == "SkipSpeech")
            {
                return Input.GetKey (buttonName);
            }
            try
                {
                    return Input.GetButtonDown (buttonName)
                }
                catch {}
                return false;
        }
    
    }
    

    Any advice would be of great help.

    Kind regards
    Kal

  • It'd be needed at the end of this line:

    return Input.GetButtonDown (buttonName)
    

    I'm not sure the script will give you the intended effect, though. The "EndCutscene" input can be pressed to skip an ActionList until either gameplay resumes, or a Conversation becomes active.

  • Well I'm not getting the error message any more, thanks Chris :)
    But the button still needs to be pressed again and again to skip dialogue. Have I done something wrong?

    What I'm after is something like Renpy has where I can just hold a button and it zooms through the text until it has a choice to be made (conversation menu in this case) or it resumes the moment the player lifts up their finger from the key.

    When you say EndCutscene, wouldn't that just skip straight to the next entire cutscene? rather than individual, dialogue: play speech actions.

    Sorry for my lack of understanding, I'm still trying to wrap my head around all this. It took me a while to figure out just how to set up the input for SkipSpeech.

  • Can you share a little more detail about the exact behaviour involved, as well as screenshots of your Speech Manager?

    Is this to say that such scrolling would be sped up while the input is held? Rather than invoking SkipSpeech, it may be a case of instead having a script affect the Speech Manager's variables when an input is held down.

  • Wow, first off Chris, I am so sorry I missed this response, I didn't realise I wouldn't get a notification if it wasn't a topic I started. That being said it's no excuse for me to miss it. I had to move on from this problem for the time being in order to push forward with the demo I am working on. Which has now been completed in an alpha state allowing me to start to refine everything.

    https://drive.google.com/file/d/1nelVgYi-TapaQy6A3pGIcfHRkq2keVme/view?usp=drive_link
    Hopefully this link works for the screenshot of the speech manager.

    I'm not sure how best to explain what I want. Currently left crtl is set up to function like the left mouse click. But what I would love to happen is when this button (or even left mouse button) is held down it constantly skips the dialogue rather than having to keep pressing it. I do not want it to skip to a new cutscene or jump a huge chunk of dialogue until the next conversation happens.

    Nearest I can think of is that holding the button down would act like an autoclicker until it's released.

    Hope this makes more sense.
    Also I hope you had a great Christmas and New years and once again so sorry it has taken me this long to find your reply.

    Kind Regards
    Kal

  • The image is private.

    The script above should do this, though - but replace GetKey with GetButton.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Welcome to the official forum for Adventure Creator.