Creating a Custom Tab System in Unity

Поделиться
HTML-код
  • Опубликовано: 25 ноя 2024

Комментарии • 224

  • @BlakeGillman
    @BlakeGillman 3 года назад +22

    I didn't even need to watch the video, just seeing the title made me realize I needed something I didn't have before. I always just programmed tabs separately depending on what system I'm making, it never even occurred to me just to make a generic tab system lol. I should do that.

  • @buzz1ebee
    @buzz1ebee 4 года назад +32

    Really good tutorial. Straight to the point whilst not missing out on any explanations. Instant subscribe. Keep up the good work!

  •  4 года назад +27

    This is... amazing. So clear and direct to target. You are the master dude. Instant sub!

  • @jdmozo
    @jdmozo 4 года назад +7

    Man you're a genius, I'm lucky to find your channel!!! Thanks a lot for the tutorial!

  • @davidsesto1224
    @davidsesto1224 4 года назад +13

    Amazing video! I love how you explain everything in such a way that can be abstracted and used in different contexts, not with the specific use of the demo in your videos.
    In case anyone is having trouble with the trigger of OnPointerClick (both OnPointerEnter and OnPointerExit work for me, but OnPointerClick does), I've read on other sites that adding a Button to the Tabs could solve the issue. It does for me, although I still do not understand why the two first events work, while the third doesn't.

    • @egamer8116
      @egamer8116 4 года назад

      I had the same problem ! I've tried everything on internet to fix it and it still not working. but After some test, I found out that It was the UI's (or images layers) problem, the OnPointerClick function works after I replace tab buttons.

  • @nemlinkacompany7577
    @nemlinkacompany7577 5 лет назад +4

    Again amazing, I love all your content and this one helped me strait away. I found few "make your tab" tutorial, but after seeing your, I had to change whole logic, because it is much more clear, and feel really profesional.
    I hope your views will skyrocket because there is few channel with such heigh quality tutorials.
    Wish you the best. And many thanks for any of yours video

  • @PyroOfZen
    @PyroOfZen 4 года назад +163

    "You could do this manually with buttons, but that's tedious" *recreates buttons from scratch*

    • @SaiCharanKommana
      @SaiCharanKommana 3 года назад +3

      Exactly...

    • @myriadtechrepair1191
      @myriadtechrepair1191 3 года назад +31

      Recreating only the functionality you need in a way that scales better is the hallmark of a good system's engineer.

    • @manavarora7644
      @manavarora7644 3 года назад +4

      @@myriadtechrepair1191 TRUE.

    • @bodietripp8218
      @bodietripp8218 3 года назад +1

      I guess Im randomly asking but does anyone know a trick to get back into an instagram account?
      I somehow forgot the login password. I would love any tricks you can offer me!

    • @nilla_studios
      @nilla_studios 3 года назад

      + can't navigate using keyboard

  • @chakanshu
    @chakanshu 8 месяцев назад +1

    Things free on youtube not on unity X| huh. Thanks so much matt yes? I've been watching your videos and learning so much and my boss is really impressed with me because of these solutions.

  • @rimoldi98
    @rimoldi98 5 лет назад +39

    Great vid! Found you out through reddit and damn... You need more subs dude, great quality and very well explained, learned a lot with it, keep up!

    • @MassimoRough
      @MassimoRough 4 года назад +1

      Don't hesitate to share the video on your social media, this way you will help getting more subs to dude.

    • @CraftBasti
      @CraftBasti 4 года назад

      Where in reddit did you find him?

  • @RiorXD
    @RiorXD 4 года назад +218

    Hold the phone.... 3:00all the years ive been using unity and i Never knew you could change the icon of the scripts and objects.....

  • @LuRybz
    @LuRybz 4 года назад +4

    Man, this is amazing.
    Really cool and organized way of doing this.
    God Bless you and thank you for such content.

  • @TheErusPrime
    @TheErusPrime 2 года назад

    This is exactly what I needed for my generic table top character builder and tracker. Thank you

  • @storiesstrauss
    @storiesstrauss 3 года назад +1

    Your tutorials are awesome! I really enjoy your thought process and how articulate you are when explaining it.

  • @Assasin1618
    @Assasin1618 5 лет назад

    I am so glad this was in my recommended! So much better than most tutorial videos on game dev around RUclips. Keep it up!

  • @eggsareliquidchicken
    @eggsareliquidchicken 2 года назад +1

    Great video! I'm making my own UI toolkit and your videos have been really useful.

  • @paulwolf8799
    @paulwolf8799 10 месяцев назад

    May you get a gazzilion subscribers, this is priceless.

  • @Ophelos
    @Ophelos 5 лет назад

    I know that this video is a few months old now, but you got a new sub because of it.

  • @TheHyvin
    @TheHyvin 2 года назад

    Great video. Quite refreshing to see some well organized code that doesn't feel hacked together. I subscribed in hopes of seeing more like this.

  • @TheNamesJT
    @TheNamesJT 4 года назад +7

    Yeah, I have watched many unity tutorials trying to learn c# watch the beginners/intermedia and advanced unity c# playlists and other RUclipsrs unity based c# playlists even purchased some Udemy course on unity and still would have never been able to think about doing this.

    • @joelperpetua3929
      @joelperpetua3929 4 года назад

      Knowing a programming language does not imply knowing how to program

    • @dormitando
      @dormitando 4 месяца назад

      @@joelperpetua3929 its been 4 years, did u already figure out the difference between a language and a framework?

  • @hernandonj
    @hernandonj 3 года назад

    Wonderful video. Precise, direct, focused, lean, and very well explained. Thanks a lot!

  • @jxvisn8551
    @jxvisn8551 5 лет назад +3

    This... this content I like :D. Great video man

  • @nericarcasci9919
    @nericarcasci9919 3 года назад

    Your tutorials are always so clear, keep it up man!!

  • @jiehongjiang5826
    @jiehongjiang5826 4 года назад

    This channel deserves more subscribers!

  • @RealFakePhD
    @RealFakePhD 2 года назад

    this is slick. great work partner

  • @Dymangel
    @Dymangel 4 года назад +1

    Ok nice tutorial, you have my like. This helped me to make something rly simple in the UI

  • @wanderergrim
    @wanderergrim 2 года назад

    Thank you this video was extremely helpful as I am making a game for my final year project of my Computing Degree

  • @BlueGooGames
    @BlueGooGames 4 года назад

    Perfect, thanks a lot! The small little trick with using an image in an event to turn it on and off was great. Now the main menu of Space Chef is starting to look and work really well! :)

  • @TipToeTiger
    @TipToeTiger 4 года назад +1

    Great tutorial, really appreciate the effort you put in. Keep it up!

  • @error04
    @error04 4 года назад

    Whyyyyy do you have so few followers??Your videos are really great and useful. I wish you a speedy prosperity of your channel, you clearly deserve it!

  • @CodemasterJamal
    @CodemasterJamal 4 года назад

    Wow, this is a really useful script. It can be used in different projects rather easily.

  • @KhrisKruel
    @KhrisKruel 5 лет назад

    hey man, great guide! Looking forward to more stuff. While I might know how to do basic things, the way you go about things brings a lot of ideas and new ways of thinking to solve my game dev problems, and is a lot cleaner as well.

  • @farvardinmainyu1961
    @farvardinmainyu1961 4 года назад

    It's Quite really good! The code is simple and clean.

  • @Gathrey
    @Gathrey 5 лет назад

    This video is great! Hoping for more tutorials :) Definitely right up there when it comes to clear and concise explanation and format. SUBSCRIBED!

  • @daicarft1765
    @daicarft1765 4 месяца назад

    thank you for the video really healped me out

  • @madmax-ut8ht
    @madmax-ut8ht 3 года назад +5

    What are you doing to be able to implement at 6:06 ? I am using Visual Studio Code and it looked so easy when you did it, but I don't get the option

    • @nintexonfire
      @nintexonfire 3 года назад

      yeah thats also my problem

    • @b3dsign
      @b3dsign 2 года назад

      Same here...

    • @dankenarigato
      @dankenarigato 2 года назад

      Yo~ my solution is using visual studio 2019 to open the script and hover on the error -> click "impletment interface" on each of them. hope it helps ~

  • @irfanyigitbaysal7894
    @irfanyigitbaysal7894 4 года назад

    you deserve more than 25k subscriber

  • @my_namejeff9770
    @my_namejeff9770 4 года назад

    this looks like magic. great video btw..

  • @MansGottaCode
    @MansGottaCode Год назад

    Outstanding. Thank you so much!

  • @Arrow5587
    @Arrow5587 5 лет назад

    Thank you for making such high quality contents. Huge Respect.😊

  • @thepolygonpilgrimage
    @thepolygonpilgrimage 5 лет назад +2

    Another beautifully explained and well paced guide. Excellent work! I'd like to reach out and see if we can collaborate on something. You deserve WAY more subscribers for this hard work and solid content.

  • @ChrisNoeth
    @ChrisNoeth 2 года назад

    This was really helpful! Thank you! :)

  • @b3dsign
    @b3dsign 2 года назад +2

    Like some here I have no idea what happens on 6:06, after you wrote IPointerExitHandler there is a lot of new code. =/

  • @gustavo.saraiva
    @gustavo.saraiva 5 лет назад

    Guy this videos is awesome, congrats 👏👏👏

  • @tranvilap4713
    @tranvilap4713 5 лет назад

    This was great, you deserve more subscribes. keep up!!!!

    • @MassimoRough
      @MassimoRough 4 года назад

      If you want to bring more subscribers and not only point out to low count you could, well, share this video for example ☺

  • @maxbauerv
    @maxbauerv 2 года назад

    Thank you so much! Great tutorial

  • @victormr1601
    @victormr1601 3 года назад

    This was very helpful, thanks!!

  • @myriadtechrepair1191
    @myriadtechrepair1191 3 года назад +1

    I just wanted to point out that in line 27 at 8:45 you check either for selectedTab==null and button!=selectedTab. The ==null case is redundant, isn't it? If the first case is true, then that means the second case must also be true.

  • @thiagobr12
    @thiagobr12 4 года назад

    Thank you so much for this awesome video! Helped me a lot

  • @jasoneider7589
    @jasoneider7589 Год назад +1

    Hey! Would you still recommend creating your own scripts over using Unity's built-in toggle system in it's current state (2022+)? I'm wondering if they have improved it enough that you would recommend it.

  • @themirlabs
    @themirlabs 2 года назад +1

    This is a very clean system. i really like it. Only issue i have is there is allot of public variables and funcs. allot of them could be private or [serilizedfield] private.
    Other then that im subbing for more.

  • @danielbird2182
    @danielbird2182 4 года назад

    Super helpful! Would be great to get anyone's advice on the best way to deselect a Tab and Page on the second click (a click on the same tab as the first click).

  • @tuanoful
    @tuanoful 5 лет назад +2

    This was great, thanks!

  • @nickmalialis6
    @nickmalialis6 4 года назад +2

    Hello. Great tutorial. One question, how do select / define which tab is selected on start up. Tab in index 0, is not what auto selects, it is usually 3 or 4.

    • @GeeCeeAte
      @GeeCeeAte 4 года назад

      same problem here. You ever fix it?

    • @stergiosk6424
      @stergiosk6424 3 года назад +2

      Late reply, but if anyone still wondering, I found a solution. On TabButton script, use a public bool variable and set it to false and add on Start method:
      if (variable){ tabGroup.OnTabSelected(this)}. Then on unity, for the tab you want to be selected on start up, just set the bool variable to true (by checking the box). Hope it helps!

  • @sevovideo
    @sevovideo 4 года назад +1

    Hey, great tutorial. Can you tell me, what should I do somewhere at 12:27, when I want to invoke onTabDeselected, when I click on selected tab again?

  • @eldanridley7
    @eldanridley7 4 года назад

    really helpful video, thank you!

  • @rodrigomulinarioramos7504
    @rodrigomulinarioramos7504 2 года назад

    Ohhh I was really looking for the first type of tab! hahaha

  • @lavizpandey9957
    @lavizpandey9957 2 года назад +1

    Good one,Thanks

  • @rekss9252
    @rekss9252 4 года назад

    Thanks man this is so amazing

  • @Cefaun666
    @Cefaun666 4 года назад +1

    Thanks for all you great work! I've learned tricks from your vids that save me hours of effort in the long run (particularly adding functions to the right mouse click menu). However, I was wondering if you could point me in the right direction to make this tab system more controller/keyboard friendly? I've tried a few things with the event system, but can't seem to make the submit button show each tab.

  • @dmitriysparrow
    @dmitriysparrow 5 лет назад

    sumptuously! Thank you

  • @liamvisionary9608
    @liamvisionary9608 2 года назад

    Love these videos, but just wish that proper naming conventions were used. I'm having trouble figuring out if something should remain public or be set as a private member

  • @sampleee
    @sampleee 4 года назад +2

    You should have made it use a dictionary instead of just getting the index, that just makes it a lot more user friendly and readable

  • @besportscrazy
    @besportscrazy 4 года назад +5

    Good info, but thumbnail is really misleading

  • @aneetnadella1123
    @aneetnadella1123 3 года назад

    Awesome tutorial!

  • @namoviot
    @namoviot 4 года назад

    thanks for this super helpful tutorial

  • @Kokomo78
    @Kokomo78 4 года назад

    Wow. Thank you for your clip. I thought I know well enough about Unity. But after watching your clip, I realized I know nothing about Unity.

  • @muratkk1096
    @muratkk1096 Год назад

    great tutorial, thanks a lot

  • @casualbachgiagame4552
    @casualbachgiagame4552 4 года назад

    Great tutorial! It help me alot.

  • @BenjaminK123
    @BenjaminK123 4 года назад

    This is a great video nice and easy code thank you

  • @WBT-p9b
    @WBT-p9b 4 года назад +1

    0:55 scared me there mate xD

  • @luciojcp
    @luciojcp 2 года назад

    Excellent video. Nice work! Subscribed!!!
    I have 1 question... And when you have so many tabs in your screen (mobile for example, 5-6 tabs are wider the screen width), how to make a horizontal scroll for the tabs, keeping the content at the same place, changing when clicking on the tabs? Can you make another video? Thx

  • @HAWXLEADER
    @HAWXLEADER 3 года назад +8

    10:04 why not simply do "objectsToSwap[i].SetActive(i==index)"?
    it's much cleaner.

    • @gush5436
      @gush5436 2 года назад

      Thanks!

    • @diegoschram
      @diegoschram 2 года назад +1

      You also need to think that maybe newer people to coding will use this, its easier to understand a if statement, imo. People with more knowledge will adapt the code to own needs or preferences just like you ;)

  • @joaovictorlapollimota2652
    @joaovictorlapollimota2652 3 года назад +1

    Great tutorial! I'm a new viewer here and I'm really loving all the videos....
    Personally, I would like to suggest a change in the Logic there. Perhaps doing something a bit more advanced:
    1 - create a tabButtonBase script (on which all tabButtons inheritance from)
    2 - Use prefabs/Nested prefabs for your TabButtons
    3 - (this is probably the biggest change) instead of executing the logic of activating/deactivating the windows on the TabGroup script let the TabButtons script handle what they should do where ever they are activated/deactivated. In my opinion, the TabGroup should only be responsible for handling which tabs are/are not active and don't not executing any inner logic on the tabs.

  • @MrValiantrobe
    @MrValiantrobe 3 года назад +1

    When I try to do this I end up with my icon being replaced by my tab_hover or tab_idle sprites, and obviously I want to reproduce what you've done here with having the icons over the background, but I'm wondering how you accomplish that. Are the sprites of the icons simply hanging over where the tabs are?

    • @MrValiantrobe
      @MrValiantrobe 3 года назад +1

      Hah, nevermind, for some reason yesterday I thought I should try to put the icon i want into the same place that the other sprites go, but instead realized I should just attach an empty gameobject to each tab gameobject and add the sprite to that.

  • @enolya
    @enolya 4 года назад

    Referencing! Keep it up :D

  • @cesarsampedro_dev
    @cesarsampedro_dev Год назад

    So cool!, Where I can get those tab icons for the editor?

  • @joshuarobinson7422
    @joshuarobinson7422 4 года назад

    You could also use Enums

  • @peterhuynh6942
    @peterhuynh6942 4 года назад +2

    How did that happened 7:53 ?

  • @EddiePenta
    @EddiePenta 4 года назад

    This is a great video! Any reason why you loop through objectsToSwap instead of just deactivating the previous selectedTab and activating the newly selected tab?

  • @JaiWithani
    @JaiWithani 2 года назад

    If you made the pages a property of the tab buttons instead, couldn't you disable/enable them without keeping track of an index?

  • @breme248
    @breme248 3 года назад

    You gained a sub

  • @TheErusPrime
    @TheErusPrime 2 года назад +1

    Okay I finally got back to my computer and realized I have no idea how to set this up. Unity using the same icon for every kind of element is really annoying. Are they all just images? Tryna learn how to make things and I am absolutely lost at the first step

  • @WalterMan
    @WalterMan 3 года назад

    Great video! But how do I make it so Tab One is selected by default? Thanks

  • @danipuig8830
    @danipuig8830 3 года назад

    how can select one of this tabs when Start() function runs? Thanks, good video man!

  • @Espiritoheroico
    @Espiritoheroico 3 года назад

    THIS IS AMAZING

  • @BleachWizz
    @BleachWizz 4 года назад +2

    Amazing video, this helps a lot for a quick project and understanding. But I still see a lot of bad practices that wouldn't scale well... Fact is I'm also one who has a lot of trouble with it.
    Would you be interested in making a video showing how could you get these 2 tabs you made into abstract classes and inherit it to recreate what you just did, plis how you can have 2 kinds of tab systems on the same project using theses classes?
    This is something that's rarelly shown and I'm sure I'm not the only one who struggles with it. C=

  • @Distortion3933
    @Distortion3933 4 года назад

    Awesome video, but now I want to know what the song is that's playing in the background

  • @jiaqili1644
    @jiaqili1644 4 года назад

    That's perfect for my app Thanks for exist :3

  • @adnansiddiquegd7186
    @adnansiddiquegd7186 4 года назад

    thanks it is really helpful

  • @jtherussian
    @jtherussian 2 года назад

    What if I wanted to have all pages enabled instead of disabled in the Scene? How do I make the Page 1,2,3,4,5 all stay enabled when starting the game?

  • @rhapen
    @rhapen 4 года назад

    if you want to use background.color like me, do not forget to set the alpha channel of the public colors in inspector ..like me :) . public colors from script are created with alpha 0

    • @DonCDXX
      @DonCDXX Год назад

      Thank you, I was having this exact problem.

  • @erdemyigit1
    @erdemyigit1 5 месяцев назад

    is subscription method redundant?

  • @binarium4376
    @binarium4376 3 года назад

    I am getting a null reference Exception after I added the tabIdle, TabHover, tabActive. it is showing that there is a problem on the tabgroup script

  • @vishnu2737
    @vishnu2737 3 года назад

    Not showing initial selection, when Start the game, button tab not highlighted?

  • @MauganKhaine
    @MauganKhaine 4 года назад

    I have several tabs all named after their purpose, each tab has its own 3 images for selected, normal and deselected state. How must the scripts be altered that each tab has its corresponded image with its corresponding 3 images for each state? I am thinking that in the TabGroup "TabButtons" should be the name of the tab and in the TabButton script it should call that part of the TabGroup script so if you hover over a tab only that tab image changes, rather then now, all change.

  • @Definitely_a_Fox
    @Definitely_a_Fox 4 года назад

    Time for Tab Systems inside of Tab Systems inside of Tab Systems!

  • @erikponti1753
    @erikponti1753 2 года назад

    LOVE IT!

  • @ROCKSMASHER
    @ROCKSMASHER 4 месяца назад

    Nice man

  • @MrValiantrobe
    @MrValiantrobe 2 года назад

    I'm watching this tutorial again with a bit more experience in Unity and I have a new question. What is the purpose of using the callback in order to activate the GameObject? Couldn't that just be done in code? Is there a benefit to doing it by Invoking a UnityEvent instead of setting it active through code?

    • @jonatansan01
      @jonatansan01 2 года назад +2

      You want to be able to reuse this tab manament code for multiple UI views. Hardcoding it mean every buttons will do the same things. For example, you may want tab A to play sound, tab B to have a visual cue, tab C might destroy half your entities in your scene, etc, etc.

    • @MrValiantrobe
      @MrValiantrobe 2 года назад

      @@jonatansan01 Thank you, that makes more sense now. I'll probably have to take a deep dive into the event system and custom coding classes around it but this is a good start, thanks again.

  • @vikchristy1238
    @vikchristy1238 4 года назад

    Hi,
    In visual studio the public List is not being refered or unrecognizable. I was hoping if you could help!

    • @adamantal9129
      @adamantal9129 4 года назад

      You create list in c# like public List nameOfList = new List();