Creating a Cheat Console in Unity

Sdílet
Vložit
  • čas přidán 13. 09. 2024
  • Learn how to create an in-game console that will allow the user to input cheat commands. Perfect for debugging builds and hiding fun easter eggs into your game...
    Interior Mapping Shader: • Creating an Interior M...
    UI Line Renderer: • Creating a UI Line Ren...
    Making UI Look Good: • Making UI That Looks G...
    --------------------------------------------------------------------------------
    Want to support the channel?
    ▶️ Help fund new episodes by joining the Patreon - / gamedevguide
    Use these links to grab some cool assets from the asset store:
    Get the Must Have Assets! - assetstore.uni...
    Free Unity Assets! - assetstore.uni...
    New on the Asset Store! - assetstore.uni...
    Top Paid Asset Store Packages - assetstore.uni...
    Asset Store Partners - assetstore.uni...
    --------------------------------------------------------------------------------
    Socials and Other Stuff:
    • Subscribe - www.youtube.co...
    • Join the Discord - / discord
    • Twitter - / gamedevguideyt
    • Facebook - / gamedevguideyt
    • Instagram - / gamedevguideyt

Komentáře • 198

  • @PhodexGames
    @PhodexGames Před 3 lety +126

    Hey, man just wanted to let you know that I think your tutorials are by far the best I have ever seen. Better then Brackeys, better than anything else. They are not only well made but you also pick relevant topics and topics most other tutorial channels don't cover. I also feel like you are actively working in the industry yourself. The best however is the general presentation, not only visually, but your approach to teaching something is so much better than those step by step tutorials that flood CZcams. You tell us the general idea and roughly show the steps, in how you achieved something. That's great for beginners because they have to do the critical work themselves and learn faster that way, on the other hand, its also great for more advanced game devs because they can just get an idea of the systems you explain and don't have to go through all the steps they already know. Although I would consider myself an experienced developer I learnt something new from nearly every video you made. Well done and best of luck!
    Markus (Phodex Games)

    • @jgoglescu
      @jgoglescu Před 2 lety +3

      brakeys is better

    • @PhodexGames
      @PhodexGames Před 2 lety +1

      @@jgoglescu You can think that way if you want.

    • @hamishmonkey6554
      @hamishmonkey6554 Před 2 lety +1

      @@jgoglescu No One Asked

    • @uxdecipher1724
      @uxdecipher1724 Před rokem

      @@PhodexGames bEtTeR tHaN bRaCkeYs. Like who the fk are u niqqa

    • @PhodexGames
      @PhodexGames Před rokem

      @@uxdecipher1724 Definetly not a niqqa lol.

  • @goldkat99
    @goldkat99 Před 2 lety +25

    For anyone stuck the OnToggleDebug method works by using the new input systems send message feature, you need a player input component on whatever game object has the debugcontroller script on it. Once you have that any function that is the name of one of your input actions with the prefix "On" will be triggered when you press that key.

  • @Pedro_Marangon
    @Pedro_Marangon Před 4 lety +57

    I've struggled a lot to find a good tutorial on cheat console and this is the simpler and best tutorial on it!

    • @vantinhnong2206
      @vantinhnong2206 Před 4 lety

      Can you share your project? If it just a recreation of course.

    • @Pedro_Marangon
      @Pedro_Marangon Před 4 lety

      @@vantinhnong2206 i didn't get to implement any version I find, i measure the tutorial by how complicated the code is and how good does the tutorial guy explain it

    • @vantinhnong2206
      @vantinhnong2206 Před 4 lety

      @@Pedro_Marangon These tutorials are so great but its creator forgot to put it on Github, really sad!

    • @Pedro_Marangon
      @Pedro_Marangon Před 4 lety +1

      @@vantinhnong2206 actually he intentionally don't share the script files. The TLDR of why is that he want to encourage us, viewers, to explore the code by ourselves, looking what he did, understanding it and making our own version

    • @nagybalint1474
      @nagybalint1474 Před 3 lety

      @@Pedro_Marangon so I won't be able to figure out what to change so this works with the basic input system than great

  • @ColdOneK
    @ColdOneK Před 2 lety +25

    Kudos for a great tutorial.
    Find it a bit annoying to have to mouse-click in the input field, before you can start typing?
    Simple -- before drawing the text field, use the GUI.SetNextControlName("name"); then simply use that name with GUI.FocusControl("name");
    Your cursor will automatically be in the field.
    GUI.SetNextControlName("console");
    input = GUI.TextField(new Rect(10f, y + 5f, Screen.width - 20f,20f), input);
    GUI.FocusControl("console");

  • @CirbyWeh
    @CirbyWeh Před 3 lety +12

    I really enjoy how you do not read out loud what code you write but rather focus on giving us some more information and stuff, while still showing the whole code so that even us beginners can follow along.

  • @mad_man_86
    @mad_man_86 Před 3 lety +4

    Could this be the single most important tutorial ever made? Leaning strongly towards 'yes' here. Thank you, Game Dev Guide Guy!

  • @Madalaski
    @Madalaski Před 4 lety +11

    Big fan of these videos! Incredibly impressed by how you manage to make tutorials about things everyone really needs in their games but hardly anyone ever talks about. Just wanted to say that you inspired me to make tutorials of my own and while they're nowhere near the same quality, making them these past few months has really helped in these troubling times.

  • @ShiloBuff
    @ShiloBuff Před 4 lety +3

    I just created a debug console a few days ago, didn't add input command yet. This video will come in handy, it looks super polished so far. It's great timing. Thank you!

  • @TheCellCH
    @TheCellCH Před 4 lety +11

    Nice video but mother of god the whitespacing at 5:47 I'll never forget

  • @4KGofMaul
    @4KGofMaul Před 4 lety +51

    Cool tutorial, I will definitely be implementing something like this into my current project.
    My main critique is that if you are going to make use of things like interpolated strings and action delegates, I would at least mention them by name so that people have the ability to search the terms and learn about them independently.

    • @tiagobarracha
      @tiagobarracha Před 4 lety +5

      Ideed, coz I've never seen this style of coding before, and I don't understand it. I can get the logic, mainly because of his explanation, but I still don't understand it.

    • @dnz8792
      @dnz8792 Před 4 lety +3

      I don't get it, he should mention about a thing the person don't know to that person go search about it?
      I think that's too much :P
      The point of the video is not explain Action or anything else he uses to build the Debug Cheat Console
      Like Tiago I didn't know what was Action and searched independently
      Try here, Tiago:
      docs.microsoft.com/pt-br/dotnet/api/system.action-1?view=netcore-3.1

    • @4KGofMaul
      @4KGofMaul Před 4 lety +4

      ​@@dnz8792 How exactly does me saying that he should call them by their correct terms so people can do independent research lead to you making the assumption that I said he should explain how they work?

    • @hellxsan
      @hellxsan Před 4 lety +2

      @Steven Docker
      I totally agree with you, i'm pretty new in the stuff, i understand many things like the new input system, but in this video are missing some parts. its frustrating to me becouse of 2 things, i did not understand how did he trigger the button without listener in the script and the part with private Action command, i understand now the input thing but the Action remembered me of a delegate . And now i'm confused why i need this and where the hell it is implemented.

  • @D3kryption
    @D3kryption Před 4 lety +16

    Nice work! I love your tutorials! Will deffo be adding this into my game :D

  • @PeterDanielBerg
    @PeterDanielBerg Před 4 lety +5

    i've just been hiding all my debug behind intentionally awkward key combos so this looks a lot smoother, i'll try it out thanks

  • @rib_rob_personal
    @rib_rob_personal Před 2 lety +33

    I was confused about 'Action' type you put in at 4:04. I figured it out by pausing at the right time and noticing it says 'System' on the side. If anyone else is stuck there, all you have to do is type 'using System;' at the very top which will allow you to use the 'Action' type. It might be best if you specifically point out that you have to do something like that in your future videos.

    • @lordkuuba3517
      @lordkuuba3517 Před 2 lety +2

      Thanks you really help me!❤

    • @TheKingmarko123
      @TheKingmarko123 Před 2 lety +2

      I was stuck here, thanks man!

    • @eenvulkaan
      @eenvulkaan Před rokem

      thanks

    • @jochewi
      @jochewi Před 8 měsíci

      If it weren't thanks to people like you, many of us would be stuck in tutorials like this. Thanks for adding what the tutorial guy thought wasn't relevant.

  • @jbaidley
    @jbaidley Před 2 lety +2

    Great tutorial, very well explained. Minor point: Contains() is a poor choice for comparing their input to the list of commands since it will rapidly get confused by commands that share substrings. What you really want to do is to get the left part of the input (delineated by a space or the end of input) and compare that to the command list.

  • @KyuVulpes
    @KyuVulpes Před 4 lety +19

    Ok, so I would have done it differently. Mainly, instead of making it an object, make it an attribute. Then when the game starts it looks through every assembly (and if it supports modding, the assemblies it loads) and looks for that attribute. The attribute only requires 1 or 2 parameters; It could require a description but the attribute finder uses the method name as the command, or it can require a command name and description. And to expand upon it, it looks at the parameter's of the method using reflection. I would only restrict it to primitives and strings only. This way is much better imo because you do not have to instantiate anything for the commands; It is done for you automatically.

    • @harshmudhar96
      @harshmudhar96 Před 4 lety

      100% agree. It's similar to MenuCommand and other attributes used by Unity.
      With some extra work, you could even add documentation to it. Furthermore, you could make it so some methods can have a parameter that takes a list of characters: for console-like command options.

    • @harshmudhar96
      @harshmudhar96 Před 4 lety

      Oh yeah, if someone does this, please add tab auto-completion.

    •  Před 4 lety +3

      That's a really nice idea, you should really make a tutorial :)

  • @efekaanaltas
    @efekaanaltas Před 3 lety +2

    Thanks for the amazing video. Here is an OnGUI() function with variables instead of magic numbers, if anyone is interested:
    (Notice, I feel like there are some errors in the naming. Though my brain is about to melt, so I'm not sure what's supposed to be what. Perhaps you may just leave them as they are, since they aren't too important.)
    void OnGUI()
    {
    if(!showConsole) return;
    float y = 0;
    float historyLength = 200;
    float lineHeight = 20;
    float inputFieldHeight = 10;
    float verticalSpacing = 30;
    float padding = 5;
    if(showHelp)
    {
    GUI.Box(new Rect(0, y, Screen.width, historyLength), "");
    Rect viewport = new Rect(0, 0, Screen.width - verticalSpacing, lineHeight * commandList.Count);
    scroll = GUI.BeginScrollView(new Rect(0, y + padding, Screen.width, historyLength - inputFieldHeight), scroll, viewport);
    for (int i = 0; i < commandList.Count; i++)
    {
    ConsoleCommandBase command = commandList[i] as ConsoleCommandBase;
    string label = $"{command.Format} - {command.Description}";
    Rect labelRect = new Rect(padding, lineHeight*i, viewport.width - historyLength, lineHeight);
    GUI.Label(labelRect, label);
    }
    GUI.EndScrollView();
    y += historyLength;
    }
    GUI.Box(new Rect(0, y, Screen.width, verticalSpacing), "");
    input = GUI.TextField(new Rect(inputFieldHeight, y + padding, Screen.width - lineHeight, lineHeight), input);
    }

  • @vitiet8229
    @vitiet8229 Před 4 lety

    This man here deserves more views and subs! This is one of the few game dev channels that provide clean and very practical tips and tutorials. Keep up the good work man!

  • @RemixProf
    @RemixProf Před 4 lety +1

    This channel deserves 1M subs. Thumps up!

  • @WesleySales1
    @WesleySales1 Před 4 lety

    One of the best Unity channels on CZcams. Congratulations on the great and hard-to-find content out there based on your game development.
    The only negative point (but completely understood) is the frequency of the videos.
    It would be great to have a course at Udemy with only Unity tips and updated by month (for example), it would be an insta-buy.

  • @adammed8667
    @adammed8667 Před 3 lety +3

    your videos have by far the highest value on CZcams. However, they are a little bit fast to be honest; I think a bit more explanation would be much appreciated. Or, if you want these videos to stay this short, I suggest you making a complete series on making a full project while using all these professional skills (not the basic stuff which we can find everywhere on CZcams), step by step, and no need to edit and make all these fancy animations and comments, just a simple stream-like video tutorials, which will require zero editing, and I promise many people will enjoy them as well. I am not saying that all the fancy stuff are useless, they are in fact so amazing and attractive. Anyway, wish you the best of luck, and thank you so much.

    • @toastyshrimp1882
      @toastyshrimp1882 Před 2 lety

      there are a few people that make videos in this format (like Derek Banas) for programmers that just want condensed information. They don't waste literally any time, and the intention is that if something was too fast, you rewind the video. At first this format bothered me for the same reasons it does you; the videos are too fast. After years of dealing with slow, 20 minute videos that explain concepts that could be understood in a tenth that time however, I've come to really appreciate these kinds of videos.

  • @scorpion666lair
    @scorpion666lair Před 3 lety +1

    This vid is pure gold!!!
    Thankyou so much for sharing!

  • @tobiacancelliere6972
    @tobiacancelliere6972 Před 4 lety +11

    I copied EVERY line of that code. It does not work with the new input system
    Best I could do is patch it with the old input system by listening in for a "\" key (to open/close the console) and the return key to check the input, but then only if the input field is not selected.
    What am I missing?
    Before you suggest it, it's been 3h of me watching every possible tutorial on the new input system and they all have a different method, both between each other and from what it's in this video
    By this of course I don't mean to put down the work you've done, it's a very well thought and cool tutorial, which is one of the reasons I subscribed to your channel. In my opinion it's missing a likely trivial but critical passage that I can't seem to find

    • @tobiacancelliere6972
      @tobiacancelliere6972 Před 3 lety +3

      @@LeoninMinecraft Actually yes. I'm going to copy down the process and code I use right below.
      • Create a folder in "Assets", I usually call it "Input" or some such
      • in there I go right-click -> create -> InputActions. I do not generate a c# class for it
      • I pin the Input Actions menu near the scene/game tabs and fill it with the maps/actions/bindings I want. Remember to save it
      • on the game object I want listening to commands I add the Player Input component, then drag&drop the InputAction asset created before in the first slot, choose the actionmap I want the game object to be obeying, and as for behaviour choose "Invoke unity events". The rest I leave as is.
      This is all the "prep work" I go through, the rest is done by code
      using UnityEngine.InputSystem;
      public class DebugController : MonoBehaviour
      {
      private InputActionMap actionMap;
      private void Awake() {
      actionMap = GetComponent().actions.FindActionMap("Debug"); // "Debug" is the actionmap name
      actionMap.actions[0].performed += OnToggleConsole; // I only activate the toggle console trigger at first
      // it's not optimal, but I grab the actions from the actions array in the actionmap. VERY dependent on the order
      BuildCommandList(); //builds the list of commands for debugging - not a part of the input system/actions/etc circus
      }
      public void OnToggleConsole(InputAction.CallbackContext ctx) {
      if (showConsole) {
      actionMap.actions[1].performed -= OnCommandConfirmed; //IF I want to close the console, I deactivate the trigger to confirm commands
      showConsole = false;
      return;
      } else {
      actionMap.actions[1].performed += OnCommandConfirmed; //IF i want to open the console, I activate the trigger to confirm commands
      showConsole = true;
      return;
      }
      }
      }
      This is the code I arrived to after much cursing and sweat, and it seems to work for me. If you still have problems, do tell and we'll find some solution I hope.
      P.S. Technically you should also unsubscribe to actionMap.actions[0].performed when the object you are using is to be destroyed. This way you don't run the risk of triggering some left over code from the trash and crashing the program

    • @andreashnida5661
      @andreashnida5661 Před 3 lety +1

      @@tobiacancelliere6972 Thank you so much my friend!

    • @telli5868
      @telli5868 Před rokem

      @@tobiacancelliere6972 Hi thanks for sharing your code, What's OnCommandConfirmed ?

    • @tobiacancelliere6972
      @tobiacancelliere6972 Před rokem +1

      @@telli5868 OnCommandConfirmed is a function that is called whenever actionMap.actions[1] is triggered.
      As this is for a cheat code inserter, I mapped actions[1] to the "enter" key being pressed, as you would at the end of a command input, so that's when the OnCommandConfirmed method is called.
      The function itself is merely a string parser to recognise the command on input and looks kinda like this (I don't have the code, new pc):
      public void OnCommandConfirmed(InputAction.CallbackContext ctx) {
      if( input == commands[1])
      Commands[1]();
      else if (....)
      ....
      }
      Hopefully it's clear enough?

    • @telli5868
      @telli5868 Před rokem +1

      @@tobiacancelliere6972 Ohh yes thanks !

  • @Adrien13Sanctioned
    @Adrien13Sanctioned Před 6 měsíci +1

    Super useful its gotten to the point where I've just made just one script that i can copy and paste into any project and rapidly setup with an input and output text and begun running commands at runtime. Consoles are a great necessity for devs, :3
    Course i grew up with Unreal, Unreal Tournament, Harry Potter and the Philosophers Stone and other Unreal 1 Engine games. So command consoles were just fun tools back then but really do save devs loads of hassle even now. Not sure why dev keep steering clear from making them these days, :O

  • @JeloOW
    @JeloOW Před 3 lety +2

    is this the #1 tutorial speedrunner?

  • @simoncodrington
    @simoncodrington Před 4 lety

    Great video mate :) always keen on seeing what dev tools and items you come up with.

  • @pandaengine
    @pandaengine Před 4 lety

    This is SO GOOOOD! Very easy to implement and flexible. Thank you a lot!

  • @gaureeshjr
    @gaureeshjr Před 4 lety +1

    really nice Video , Found it really helpful , your are amazing brother

  • @AgsmaJustAgsma
    @AgsmaJustAgsma Před 4 lety

    I've been waiting for a tutorial like this one for ages.

  • @あれくす
    @あれくす Před 3 lety

    Thanks. I hope you continue to make more videos!! Would love to see one for an target box in games like MMO's or RPG's that highlight the enemy with various options or ways to do so. That would be great :)

  • @cheekymonkey0806
    @cheekymonkey0806 Před 4 lety

    Literally exactly what I needed! Keep up the great vids!

  • @sheffieldk.408
    @sheffieldk.408 Před 4 lety

    Best unity tutorials by far

  • @Tomyk9991
    @Tomyk9991 Před 4 lety +16

    Nice idea. I had a similar one, where i am able to mark a method with an attribute [ConsoleMethod("name", int additionalParameters, etc...)]. With reflection i just managed them in a list, like you did. That way, i dont have to manage the list manually, but of course i do have more computional cost at the beginning.

    • @artemisDev
      @artemisDev Před 4 lety +2

      I actually used something like this for commands of a cli app. It'll be real flexible but yea, reflection with take quite a bit of performance for loading, tho i think it's worth it.

    • @Hietakissa
      @Hietakissa Před rokem

      Hey, I know this is a very old comment but I'm trying to implement this as well but I've never used reflection before. I made the attribute and got all the methods with that attribute, I just don't know how to create DebugCommands from those methods, like how to create the generic objects and use the already existing implementation of the method in the action

  • @Mempler
    @Mempler Před 3 lety

    This is a good channel. Sadly brackeys stopped their channel but this is a great alternative!

  • @yasinayas9065
    @yasinayas9065 Před 3 lety +3

    How can I make so when I press the ` key it also focuses on the textfield?

  • @LuRybz
    @LuRybz Před 2 lety

    Dude, this is beyond average. Thank you again for sharing.

  • @gavintantleff
    @gavintantleff Před 4 lety

    Bruhhhhhhhhh I literally just finished doing this and then Game Dev Guide releases an awesome video on how to do it.

  • @Labyrnthdom
    @Labyrnthdom Před 2 lety

    I agree with everything you said about testing during development. I have said this years ago that the reason for codes and console cmds is to test the functionality of the game. Who in their right mind would play the game to level 99 just to test it.. let's skip.to that level and test it

  • @あれくす
    @あれくす Před 3 lety +2

    How do you get the toggledebug and onreturn functions to actually get called????

  • @InsertName0001
    @InsertName0001 Před 6 měsíci +1

    I'm getting an error around 3:15 saying "Assets\Scripts\DebugController.cs(23,5): error CS0103: The name 'input' does not exist in the current context" (also at (23, 74))
    any suggestions on fixing this?

  • @dreamworld4203
    @dreamworld4203 Před 4 lety

    thanks for the guide man, Keep it up ♥

  • @shortiez3149
    @shortiez3149 Před 4 lety

    this is perfect. Good job

  • @J1mW357
    @J1mW357 Před 4 lety

    You could also add an attribute for that if you just want to call a function directly, place an Attribute above it with the command name and the description and you're done with that function.

  • @y01cu_yt
    @y01cu_yt Před rokem

    Thanks!

  • @070tahsin
    @070tahsin Před 3 lety +2

    Where did u call the Onreturn method??? pls help

  • @jochewi
    @jochewi Před 8 měsíci

    It would have been great if you had explained how you did the actions or at least what parts of the code you should skip if you want to activate it another way.

  • @wzukay6648
    @wzukay6648 Před 2 lety +2

    What should I do if I want more actions on a single command (e.g. give itemID itemAmount)?

  • @StigDesign
    @StigDesign Před 4 lety +1

    2:45 LOL Nice Edit XD :D :D

  • @paladinramos
    @paladinramos Před 3 lety +2

    Wonderful job, but i just wanted to say that i have adapted the scripts to work with the old input system.
    This new input system needs updated tutorials, on how to integrate and even replace previous code.

    • @JordanLiver
      @JordanLiver Před 3 lety +2

      Would you mind sharing this? I'm having trouble with the OnSubmit aspect. It doesn't seem to pass that key to the Input.

    • @JordanLiver
      @JordanLiver Před 3 lety

      Oh nevermind, I found a comment by Mohammed Omar czcams.com/channels/fSzQ3JjiwmuL0SWMH1uA7Q.html about how to do it. From them:
      "An easy fix for this is to add these lines at the end of the OnGUI function and remove them from the update
      if (Event.current.type == EventType.KeyDown && Event.current.character == '
      ')
      {
      HandleInput();
      input = "";
      }
      "

  • @homemacai
    @homemacai Před 3 lety

    The next Brackeys here for sure!

  • @MegaFarciarz
    @MegaFarciarz Před rokem +1

    Why would you use a List when you have defined a base type for your commands?!

  • @a_rockgames6019
    @a_rockgames6019 Před 2 lety +2

    The input just doesn't work for me

    • @XxdeadloicxX
      @XxdeadloicxX Před 2 lety +1

      Same, I am working on it. If I get any result you will be informed.

  • @kadircalloglu2848
    @kadircalloglu2848 Před rokem

    i think we can use for all commends enum class with index, so we can reach our goal basically

  • @mrdiamonddog6
    @mrdiamonddog6 Před 3 lety

    I didn't understand most of the code but it works so im not complaining

  • @arsouilleur5779
    @arsouilleur5779 Před 2 lety

    Math: *is confused by what the "grave accent" is*
    Me, a native French speaker: *hon hon hon*

  • @KellerG68
    @KellerG68 Před 3 lety +2

    I probably forgot something but when I enter into the text input mode, the cursor is not blinking and the textfield is not receiving the inputText 🤔

    • @TheCaboooom1
      @TheCaboooom1 Před 3 lety +1

      Currently having the same problem...

  • @theloonyllama
    @theloonyllama Před 3 lety +1

    can you make an inventory tutorial? all the other ones ive watched or looked at dont make sense or are explained correctly

  • @oskarz
    @oskarz Před 3 lety +2

    Why are we not using properties here?

  • @c0der23
    @c0der23 Před 8 měsíci

    Hey! Great video, i just have one question, at 3:49, is there a reason for not simply using {public get; private set} instead of the extra variables?

    • @GameDevGuide
      @GameDevGuide  Před 8 měsíci +1

      Personal preference around readability. Habits formed after working on teams with shared code over the years. Making a private variable, and a public getter is much clearer and faster to parse on large projects in my experience.

  • @GrandHighGamer
    @GrandHighGamer Před 4 lety +2

    Worth knowing: It's the ` (grave accent) for UKers, but that key is ~(tilde) for Americans, and every now and then a game will code it poorly and so trying to type an apostrophe will open console.

  • @ThePavilionWeb
    @ThePavilionWeb Před 4 lety

    good work, well done.

  • @ChupachuGames
    @ChupachuGames Před 4 lety

    thanks game dev guy

  • @jochewi
    @jochewi Před 8 měsíci

    I need help... How can I increase the font size? It looks very small

  • @LeithHussain
    @LeithHussain Před 3 lety +3

    could you release the code? it is a bit too hard to follow as you are going so quick

  • @vantinhnong2206
    @vantinhnong2206 Před 4 lety +3

    Can you put your project on Github sir?
    Also your videos are great!

  • @SpawnCampGames
    @SpawnCampGames Před 4 lety

    Super useful

  • @crazygames1144
    @crazygames1144 Před 3 lety +2

    Can u give me the source code cause I dont understand it at all
    It keep giving me in error

  • @feliscape
    @feliscape Před 3 lety +1

    4:20
    Im having problems with the Action command, it says that the type or namespace "Action" was not found.

  • @rickyfreddy6963
    @rickyfreddy6963 Před 8 měsíci

    Hi there, thanks for this amazing video. I have the system working, however when I press the backquote key to open the console window, the command I type gets a backquote symbol (`) in front of it. How can I prevent this? Thanks! :)

  • @quantdev
    @quantdev Před rokem

    how do i make a command that has a string as an argument? when i try to change DebugCommand to DebugCommand nothing happens.

  • @ermilburn02
    @ermilburn02 Před 4 lety +2

    I'm having an issue where you have to click into the box to enter text, and click out of it to submit the command. Is this normal?

    • @Mohammed_Omar_U
      @Mohammed_Omar_U Před 3 lety +1

      This isn't an issue at all. That's because I assume that you are using the old input system where the input not associated with global events like the new input system
      An easy fix for this is to add these lines at the end of the OnGUI function and remove them from the update
      if (Event.current.type == EventType.KeyDown && Event.current.character == '
      ')
      {
      HandleInput();
      input = "";
      }

  • @user-hg5mt8lz2y
    @user-hg5mt8lz2y Před 2 lety

    thank you

  • @TheKAIKO198
    @TheKAIKO198 Před 4 lety

    Nice video! Could you make some tutorial about spell system on RPG? It would be great!

  • @RiorXD
    @RiorXD Před 4 lety +1

    6:40 most important part of the video.

  • @panickal
    @panickal Před 2 lety +1

    Can I find the code online? I don't get why you wouldn't put it online.

  • @eenvulkaan
    @eenvulkaan Před rokem

    Now how do we use arguments in this?

  • @antonclark608
    @antonclark608 Před 3 lety +1

    Having trouble adding strings instead of ints, I dont know how to properly invoke it. Anybody got any ideas?

  • @smarttarded
    @smarttarded Před 7 měsíci

    Btw, at 5:49, you can use null propagation by doing commandBase?.Invoke(), the ? serving as the null check. Something like below (I renamed the classes and added another one that takes in 2 types)
    ConsoleCommandBase consoleCommand = commands[i];
    if (consoleInput.Contains(consoleCommand.commandId))
    {
    (consoleCommand as ConsoleCommand)?.Invoke();
    (consoleCommand as ConsoleCommand)?.Invoke(int.Parse(inputProperties[1]));
    (consoleCommand as ConsoleCommand)?.Invoke(baseItem, int.Parse(inputProperties[1]));
    }

  • @jupit3r131
    @jupit3r131 Před 2 lety

    Scriptable objects would make this awesome

  • @abhisheksuper20
    @abhisheksuper20 Před 4 lety

    Awesome!!

  • @beefy___
    @beefy___ Před rokem

    How would you go about that suggestions/search thing you mentioned in the end?

  • @colicpizza4168
    @colicpizza4168 Před rokem

    How do I move console to the bottom of the screen?

  • @aliengarden
    @aliengarden Před 2 lety

    There's a nice package called InGameDebugConsole that does this for you.

    • @telli5868
      @telli5868 Před rokem

      Hi, i've found it but i can't find where do i bind the key to open it ?

  • @Warpgatez
    @Warpgatez Před 2 lety

    Mentions rosebud. Receives a like and sub. Ultimate CZcams cheat code.

  • @nocultist7050
    @nocultist7050 Před 3 lety

    Can you make video on best way to update information in UI?

  • @Agent_Ax
    @Agent_Ax Před 3 lety

    Waiting For New Tutorials :) Something Like How To Get Max Graphics In Unity

  • @mahekthapa9053
    @mahekthapa9053 Před 11 měsíci

    hey there can you please help me to make small command for me? what i want is i press key command panel opens and i type then hit enter then should return string what i typed in command that's it if you interested to help ill provide you plugins

  • @TheKr0ckeR
    @TheKr0ckeR Před rokem

    How can we activate directly text writing before clicking to panel? If i open the panel, to write, i need to click it. Is there anyway to make it writeable as soon as we open?

  • @xylodine
    @xylodine Před 3 lety

    every time i try to fix an error, another one pops up. i dont have the input system in my version, (or at least i dont think) and if i try to switch my project version to a newer version, everything gets corrupted. please help!

  • @walterwhite42068
    @walterwhite42068 Před 4 lety +1

    Please guide me on how to have the autocomplete working with this console.

    • @PhodexGames
      @PhodexGames Před 4 lety +2

      Well, whenever you type a new character in the input (check the length of the input string) search your list of commands if they contain the entered letters (command.Contains(input)) and then just display the list of fitting commands on-screen. Then if you click on an entry from that list just execute the regarding command. You can of course advance this with more functionality if you want, but that should work pretty well as foundation.

  • @elite_ramsay1667
    @elite_ramsay1667 Před 2 lety

    I dont know if I missed it but where do I put the scripts and the Input system is it on a empty gameobject?

  • @GrayFernandez
    @GrayFernandez Před 3 lety +1

    Am I the only one where who gets errors because of the Action Object?
    Is Action a class he created in another tutorial? I have an error because of Action, the type or namespace name "Action" can´t be found

    • @PMAndrews
      @PMAndrews Před 3 lety

      add using System; at the top of the script

  • @mordiemannogenost69
    @mordiemannogenost69 Před 2 lety

    Crap, I know this is kinda unrelated but I just have to share my pain... I was going to a unity project I had in the windows file explorer and pressed CTRL + D for duplicate. Turns out it deletes the folder instead... and I have automatically clean Recycle bin on.

  • @crazist228
    @crazist228 Před rokem

    here is add. If you write set_gold / with space after command it will be parce exeption. Also if you do not check count and write just set_gold. If you need here is solution private void CheckCommand()
    {
    if (_showConsole)
    {
    string[] properties = _input.Split(' ');
    for (int i = 0; i < commandList.Count; i++)
    {
    DebugCommandBase commandBase = commandList[i] as DebugCommandBase;
    if (_input != null && _input.Contains(commandBase.comandId))
    {
    if(commandList[i] as DebugCommand != null)
    {
    (commandList[i] as DebugCommand).Invoke();
    }
    else if (_input != null && commandList[i] as DebugCommand != null && properties.Length > 1)
    {
    if (int.TryParse(properties[1], out int value))
    {
    (commandList[i] as DebugCommand).Invoke(value);
    }
    }
    }
    }

    _input = "";
    }
    }

  • @daephx
    @daephx Před 3 lety +2

    Great, but you totally glanced over the input action system

    • @FuryFight3r
      @FuryFight3r Před 3 lety +2

      I agree, Im now stuck wondering why my project doesnt understand what a "private 'Action' command" is and now seems like I've just wasted 45 minutes following along and coding with a tutorial that doesnt specifiy what is actually required before beginning. Im just going to revert back to simple commands like..
      if(string == "GiveMoney")
      {
      inv.GivePlayerMoney(5000);
      }
      Saves me wasting anymore time on something that is so loosly explained and rushed over.

  • @ryanjacoblover
    @ryanjacoblover Před 2 lety

    i am very confused i have like 75 bullion errors and no idea how to fix them

  • @Rokyloreq
    @Rokyloreq Před 3 lety

    Hello there is no action Thing in my code when i write it i get errors

  • @JB-iz8bi
    @JB-iz8bi Před 4 lety

    Awesome

  • @theingegnere
    @theingegnere Před rokem

    If i think how much I struggled to manage glyphs,shaders&co for embedding text in quake style console in c++ with opengl I start crying..

  • @sayama2082
    @sayama2082 Před 4 lety

    Just a quick question, I know how to use the inputSystem with the "CallbackContext" but, how do we use the "InputValue"? I never see where we could use it....

    • @dakalamin
      @dakalamin Před 3 lety

      InputSystem supports different types of joysticks and gamepads. So sometimes you may need a particular value of for example an x axis of the left stick of PS4 controller when callback happens. That's the situation when the InputValue makes sense

  • @ScottGarryFoster
    @ScottGarryFoster Před 2 lety

    Don't forget Unit Tests...