ScriptableObjects, Explained | Unity Tutorial

Поделиться
HTML-код
  • Опубликовано: 2 июл 2024
  • Learn the power of Scriptable Objects! In this tutorial video you'll learn about some of the awesome things you can do with ScriptableObjects. From saving memory, enabling configuration-driven games, and more!
    Scriptable Objects are hugely powerful tools that Unity provides to us to make our lives easier!
    💸 Ongoing sales 💸
    ⚫ See all active asset sales on the Asset Store: assetstore.unity.com/?on_sale...
    ⚫ Save 25% off your first Asset Store Order: prf.hn/click/camref:1101l9QvC...
    ⚫ Save up to 50% on NEW Assets: assetstore.unity.com/?new_sal...
    👨‍💻 As always, all code from this video is available on GitHub: github.com/llamacademy/script...
    ❤ Believe in LlamAcademy's mission and have received value from the videos? Become a Patreon Supporter or RUclips Member:
    ⚫ Patreon: / llamacademy
    ⚫ RUclips Member: / @llamacademy or click the Join button on any video
    ----
    Most tutorials come from knowledge gained making survival.llama.software Llama Survival - a top-down zombie survival shooter for Android and iOS.
    I also have some Unity Assets (affiliate link): assetstore.unity.com/publishe...
    Some links may be affiliate links, which at no additional cost to you, gives me a small portion of the purchase.
    #unitytutorial #tutorialtuesday #gamedev #tutorial #unity #llamacademy #gamedevelopment
    Chapters:
    00:00 What the heck are Scriptable Objects Anyway?
    00:48 #1 Use Case (according to Unity)
    01:42 Creating Scriptable Objects
    04:33 What Data Should Go into a Scriptable Object?
    08:33 Using ScriptableObject Data in a MonoBehaviour
    10:23 Using ScriptableObjects with Components You Don't Control (NavMeshAgent, for example!)
    14:14 Dangers of Modifying ScriptableObjects in the Editor
    17:10 Recap!

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

  • @salmanalfarisi6678
    @salmanalfarisi6678 15 дней назад +1

    i've watched a lot of people discussing about scriptable object, i never understand what case it can be use for, but i watched this video, and it gives me an idea about how to use it, and i've been used scriptable object since then, thank you Liam academy, thanks, love you, wish all your dream can become true

  • @retroman7581
    @retroman7581 2 месяца назад +3

    Great explanation! You deserve way more attention for your tutorials, they are great :)

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

    this did a good job of formalizing a lot of the patterns I've been using with SOs. I'll probably adopt the naming scheme since I've had the same issue with naming collisions.

  • @Josh-gb9ml
    @Josh-gb9ml 2 года назад +4

    I wanted to watch this just to make sure I'm not missing any cool tricks or creative uses of SO's since your videos are always so chalk full of little golden nuggets of information. And sure enough I was exposed to code and ideas that have inspired me to dig deeper and learn new things. Your channel is a hidden gem man I could probably find hours and hours of footage about scriptable objects on youtube and I doubt any of them would even come close to being as useful as this video was. Cheers friend

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

      🤗 thank you! I really appreciate that! You brightened up my day!

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

    You know how to deal with beginner! You deserve a job on big company. Thank you!

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

      Thank you for the compliments 🙌

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

    you are an awesome teacher

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

      Thank you I appreciate that 🙏

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

    Well explained mate!

  • @darkman237
    @darkman237 2 месяца назад

    So how do you access the sub classes later? Enemy/Boss/Major Boss , Enemy/Boss/Minor Boss , Enemy/Boss/Final Boss , Etc.

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

    Really amazing video and kind of blew my mind. It is so much more intuitive for a designer to drag and drop "Attacks" or enemy "stat sheets" into a given enemy prefab.
    It also makes sense becaues enemies/enemy types pretty much always start out with some sort of "static" base value.
    Even in the case that an enemy's health needs to be scaled in some fashion we can throw in values like baseHealth and/or healthScalingFactor.. into the scriptable object and bam.
    You can have sets of values in a neat sheet and if you ever change your mind on an enemy's stat balance you can simple switch it out for the older version without having to retype values in code.
    Now, one question perhaps regarding the permanence of the data. Changes to scriptable objects are always permanent, correct?
    So those could be used for saving some of the most recent changes to say, player health. This could be quite useful for preventing alt f4 quitouts from playres to revert their own death or stuff.

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

      Changes to the ScriptableObjects persist in the UNITY EDITOR ONLY (regardless of play mode or edit mode).
      On a deployed device any changes will not be persisted through runs of the game! Once a player restarts the game, they will lose any changes made from the previous run.
      To retain changes in a build you'd have to persist this in a database, a file in Application.persistentDataPath, or remotely on some server.

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

      @@LlamAcademy Ohh I see. Still quite useful for base values. Thanks for the reply!

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

    Please can you make a video on how to save scriptable objects data using a savesystem.

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

      Hi! An important piece in this video is that you do not generally create ScriptableObjects at runtime. You would not use ScriptableObjects in a Save System. Instead you should use Serializable Classes like in this video: ruclips.net/video/mntS45g8OK4/видео.html

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

      @@LlamAcademy Thank you soo much, but I have made a save system already, the problem is I don't know how to save data of my weapon (which is a scriptable object) as I upgrade my weapons level, fire rate and reload time. BTW, I watched the video already thank you.

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

      In that case, you should be able to serialize your ScriptableObject's properties into your save system and deserialize them back into a ScriptableObject on load. Is that not working for some reason for you?

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

      @@LlamAcademy I havent seen a video for that

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

      It's the same concept. The ScriptableObject is just a C# class that is serializable. You mark the ScriptableObject as [System.Serializable] and do JsonConvert.DeserializeObject. You may have to do something like make a fully serializable class because I’m not sure if you can simply do new YourScriptableObject() which is what the Json Serializer will do

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

    sounds like SO's are templates

  • @monkeyrobotsinc.9875
    @monkeyrobotsinc.9875 5 месяцев назад +1

    constantly looking up plus ringlight and glasses equals super annoying.

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

      Thanks

    • @crtglowgames
      @crtglowgames 5 месяцев назад +1

      If nothing else that, er, 'constructive' new comment may have bumped your video up the algorithm, as it was recommended to me today. Great video, with useful real-world examples, thanks. And the light wasn't remotely annoying to me for what it's worth. 🙄