Custom Resources - A Godot Workflow GAME CHANGER

Поделиться
HTML-код
  • Опубликовано: 27 май 2022
  • Speed up your Godot game development workflow like never before with the power of custom resources. Data, game mechanics, save data, and more, the only limitation is your imagination.
    Background Music: One Inch Punch - YIN YIN ( • 03 - YĪN YĪN - One I... )

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

  • @fieldtrip2178
    @fieldtrip2178 Месяц назад +11

    For those who are wondering, You can set custom resources as types in Godot 4.

    • @Apebek
      @Apebek Месяц назад +1

      I was looking for this comment. thanks!

  • @AlfredBaudischCreations
    @AlfredBaudischCreations 2 года назад +420

    For those coming from other engines or from a Google Search, the comparable feature to the 3 big engines: (1) Godot: Resources; (2) Unity: ScriptableObjects; (3) Unreal: DataAsset, Data-Only Blueprints or DataTables (although DataTables are similar to a folder full of Resource files in Godot). Btw, this is probably one of the coolest Godot videos I've ever seen, due to how you edit and present content! Awesome work.

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

      Thanks

    • @coreyaruecker
      @coreyaruecker Год назад +4

      I was wondering if this was the same as scriptable objects. Now I know what I’ll be doing with this.

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

      Oh neat
      Thanks

    • @tonygamer4310
      @tonygamer4310 7 месяцев назад +3

      This actually has one major advantage over Scriptable Objects, which is the ability to easily save them at runtime. With Unity, they can only be saved easily with editor builds, but in the actual build, it doesn't work without a lot of effort

    • @BraveLobster4567
      @BraveLobster4567 6 месяцев назад +1

      Coming from a coding background this is just like... static objects? I mean, that's great, I now know how static objects can be referenced and set up in Godot, but it's strange to me that they would make even more new terminology around a really old concept.

  • @LucyLavend
    @LucyLavend 2 года назад +198

    I've seen a lot of people use custom resources, but I've never tried them because I thought that it would be quite complex. Turns out that it's really not that hard, thank for the accessible tutorial!
    (love the colorful pixel graphics btw)

  • @uheartbeast
    @uheartbeast 2 года назад +124

    Great video! The end was a real relatable moment for me. *crosses fingers for Godot 4*

    • @sosasees
      @sosasees Год назад +3

      you can't set custom resource types as export type.
      but you can set Resource as the export type
      and then put a custom resource in the variable because it inherits from Resource.

    • @cearaj405
      @cearaj405 Год назад +5

      @@sosasees the catch is, directly creating a custom resource in the export variable currently means scrolling around the dropdown menu trying to find _one_ specific custom resource type among *all* resource types available. This can be quite a nuisance depending on the project workflow.
      Either way a maintainer said support should be there by 4.0 Beta, so that's good

    • @sosasees
      @sosasees Год назад +18

      *¡yes it's fixed in godot 4!*

    • @ayupitsali608
      @ayupitsali608 8 месяцев назад +6

      Thanks for the update!@@sosasees

    • @altairlevega6613
      @altairlevega6613 Месяц назад +1

      @@sosasees How do you write that in the resource's script?

  • @masheepcian
    @masheepcian 2 года назад +44

    1:30 I dunno if this was just for an example but you can also do this by using:
    export (int, MIN_VALUE, MAX_VALUE) var stuff : int

    • @RenderingUser
      @RenderingUser Год назад +3

      additionally:
      export (int, MIN_VALUE, MAX_VALUE, _STEP_ ) var stuff : int

  • @KyleSzklenski
    @KyleSzklenski 2 года назад +72

    Super glad you covered adding functionality, something a lot of resource tutorials miss. And don't forget: they follow inheritance, so you can extend and override functions with new resource types. My favorite use of custom resources is artificial intelligence and weapon targeting types. I talk about the latter a lot in my tutorial for the same, but with the former, you can make an aggressive AI, a passive one, a healer, etc., and apply whichever you want. It's sheer brilliance. Good tutorial!

    • @Pefeper
      @Pefeper  2 года назад +7

      I use resources for AI in a lot of my own projects too, it's so convenient to test and expand upon

  • @emre5614
    @emre5614 Год назад +10

    It is also a good idea to mention that loading resources is considered unsafe and may lead to arbitrary remote code execution, so probably not wise to use it as a save/load system.

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

      How?

    • @superscatboy
      @superscatboy 3 месяца назад

      I can't find any mention of this in the docs. Why would arbitrary code be stored in a resource, and why would it be executed?

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

    I just stumbled upon this video, and I'm pretty much blown away! It was really understandable, the pacing is great, and oh my god those animations are gorgeous!

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

    This really helped me grasp the concept and I look forward to seeing experimenting with the workflow. Thank you.

  • @159phongsakornkawhaolai4
    @159phongsakornkawhaolai4 8 месяцев назад

    your visual make me feel good!
    Love it!

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

    the visuals and production quality of your videos is very inspiring .

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

    Animations and pacing was perfect 👌 keep up the awesome content

  • @rosthouse
    @rosthouse 2 года назад +24

    Yes, my dude. Finally a nice (fancy) tutorial on the powers of the custom resource. They are such a great concept and utility, I use them so often.
    BTW, two tips:
    1. Custom Resources can have signals as well.
    2. You can't export Custom Resources (yet), but with a getter/setter you can check if somebody assigns the correct type.

  • @OrangeLove-um4dd
    @OrangeLove-um4dd 3 дня назад

    This video's style is funky as hell, dude, that makes it an IMMEDIATE go-to for me to watch!

  • @HeraldOD
    @HeraldOD 2 года назад +5

    Your pixel visuals are awesome, and I love the yin yin background music :D

  • @mrpedrobraga
    @mrpedrobraga 2 года назад +29

    I am a big fan of custom resources also, I use them all the time -- especially good when combined with custom editors and import plugins.
    I made one for interpreting a custom scripting language for writing dialogues -- the file is written in plain text and compiled when imported as a custom resource, saving time not compiling it while the game is running.
    Yet, this video managed to explain Resources so clearly that I now plan to use it much more than I was already going to for all kinds of purposes.

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

    Wow, that was an eye opener for me - many thanks for sharing your knowledge!

  • @maudjito
    @maudjito 8 месяцев назад

    One of the best tutorials and tips video I've seen!

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

    Thank you for this explanation of custom resources, it's exactly what I needed.
    Moreover the video is well made stylish, clear and concise.

  • @emi_cpl
    @emi_cpl 2 года назад +5

    What a great tutorial! You deserve way more subscribers!! 👏

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

    Amazing guide, easy to follow, pleasant to look at. Love the animations as well.

  • @OlmStatic
    @OlmStatic Месяц назад

    wonderfully creative video, and straight to the point. RUclips needs more guys like you bro

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

    Wow, fantastic video. Making nice tutorials is hard but this one is really informative.

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

    This is a gem, flawless video explanation and edit. I really loved it and can't believe how you only got around 3k subs

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

    Great vid! love the examples and video effects.
    I was actually doing this exact same thing for my RPG I was making.

  • @MrDajavi
    @MrDajavi 8 месяцев назад

    Nice way to implement composition! looking forward to implement this in futures games!

  • @modley_the_m_guy
    @modley_the_m_guy Год назад +7

    Custom Resources are AWESOME! I use them in my game for example to quickly create hats and costumes which grant the player different abilities, change their movement, ect...! I have all of the normal costume stuff such as the speed, gravity, ect..., then the costumes texture (the texture the costume will give the player), and finally a final export var called "special_effect" which is a string and I put in it the name of the special effect such as "dash", "shoot bullet_type:(type)", ect... and I add in the player script what each o' them do. Really useful stuff!

  • @kiinii-pixel
    @kiinii-pixel 7 месяцев назад

    i appreciate all the effort that went into making the pixel art for this video

  • @fyofyoriosity2350
    @fyofyoriosity2350 2 года назад +24

    Okay, well explained fun contents aside - I am in awe of all the pixel images and animations. This had to be so much work for a 5 min video already, even if just yeeting in some gradients in aseprite. I really like the little touches like the smearframes from the export image (0:55) ... wait, we were talking about resources, right? XD Really good video!

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

    Neat - Resource are used very well for Composition - very good video fast paced.

  • @thijsriezebeek790
    @thijsriezebeek790 16 часов назад

    Small tip : in the timed explosive resource, you manually preload a scene for the explosion. Instead you can also make this an export variable of PackedScene. This has 2 benefits, moving scene file doesn't break the loading and you can now have different explosions!

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

    What a great video! Awesome presentation and very informative. Thanks!

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

    I love your tutorial style! I subscribed and hope you'll be making some for Godot 4 in the future!

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

    I've been using custom resources for years, but this is the first time I've seen them explained so FUCKING well. It's a perfectly concise, well-conveyed explanation that doesn't try to sound smart with lots of jargon. Beautiful.
    I help out a lot in Godot's Discord server, and I think I'll be sharing this tutorial with a lot of folks in the near future. Very well-done video!

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

      I really like his presentation style using pixel art.

  • @Gwen_Hemoxia
    @Gwen_Hemoxia 24 дня назад

    OH MY GOD THANK YOU SO MUCH
    THE RESOURCESAVER IS SO UNINTUITIVE

  • @tomysamoa
    @tomysamoa 6 месяцев назад

    love the style oozing from this video, damn. Also happens to be useful

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

    Didn't knew about this, this is very cool, I will start using it just right now

  • @okie9025
    @okie9025 Год назад +8

    I'm thinking that you can also use custom resources as a sort of "Theme" resource for components in your scenes, if you're going for a components-based data flow. For example, you might have a HealthComponent, to which you can simply attach the custom resource to pick out the actual health value. The custom resource might just be a huge list of values which specify health, damage, defense etc. of different entities in the game, and the job of the different components is to utilize these values. This means that enemies, the player, and breakable environmental objects could all have a separate HealthComponent, but with the health values all conveniently located in one file (the custom resource) instead of having to change the exported variables of each entity's HealthComponent.

  • @greggregoryst7126
    @greggregoryst7126 11 месяцев назад

    Very good stuff, thanks for the video c:

  • @weidiocrow
    @weidiocrow Год назад +4

    Very informative video even a year later and the pixel animations are soulful.
    I'd add that it's much easier to load data into custom resources from a CSV file and the like, which is a pretty common for games with a large amount of CRUNCH(rpgs, rouge-likes, ect.) a custom resource is also super easy to pass around and decouple from UI/display logic!
    Custom resources can be set as export types now in Godot 4! 4:21

  • @AvitheTiger
    @AvitheTiger 8 месяцев назад +3

    Using resources to save games is actually a huge game changer, especially since I'm coming from Unity where I had to turn every Vector3 into an array and back

  • @nocultist7050
    @nocultist7050 9 месяцев назад +5

    For people coming from Unity: YES this is Godot's ScripableObject equivalent.

  • @luislodosm
    @luislodosm 9 месяцев назад

    Very creative editing.

  • @kellybmackenzie
    @kellybmackenzie 8 месяцев назад

    This is AMAZING, I love it!! They're like ScriptableObjects!! That's so cool :3 Thank you so much, this was so helpful!!

  • @epeon-wisp
    @epeon-wisp 2 года назад

    Thanks, this is really inspirational.

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

    wow this video was realy well made!

  • @midnightdev73
    @midnightdev73 7 месяцев назад

    Jeez thank you so much my mind is blown

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

    Man I love heavily edited videos like this (packed and compressed, highlight the important things) as opposed to those that has no editing.
    You know that type of vid where "I explain as I go through my UI and stuffs, I hope I don't break anything so you do this and that whoops I mistyped, there you go that's how you do X in Godot" and I've just wasted 60 minutes

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

    Underrated channel

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

    thank you!!! i used this in the item system for my game so i can preload a single scene and just attach a resource to the custom properties

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

    Wow didn't know that BIG THANKS to you my friend

  • @_gamma.
    @_gamma. 2 года назад

    Yes! Resources are AWESOME
    Slick video too

  • @AudioBoi1
    @AudioBoi1 7 месяцев назад

    wow, that's some good stuff, thank you!

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

    "death-explosion bit"
    you piece of- what the- ok listen that's mind boggling, that's actually so good, I'm absolutely trying this kind of method in future

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

    Oh, by the way, you can use editor hints to clamp values:
    export (int, 0, 255) var my_value := 0

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

    Ohh this is a good video, super clear, good information. Thumbs up from me.

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

    Great video! Looks a bit complicated for a complete begginer, but worth digging into. Thanks!

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

    man i love this song
    even if your video was bad i'd sub anyway

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

    great video!

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

    AKA composition and inheritance. Thank you. Bloody useful stuff.
    Sometimes you need a basic entity to inherit characteristics from
    Other times you want composition
    And godot forces composition in its node structure
    But custom resources can be used to make components (the timed exposition is a component that was added to an individual instance of an enemy.)

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

    This is wild. I never knew godot got this crazy!

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

    you have got that cool factor

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

    the fps is looking good so far, hope you release it

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

    super useful thanks!

  • @vincentl7022
    @vincentl7022 2 года назад +21

    Seems really cool, is it comparable to scriptable object in unity, pardon my lack of knowledge of the beloved Godot engine

    • @Pefeper
      @Pefeper  2 года назад +9

      Yep! Custom resources are basically the Godot version of scriptable objects

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

      @@Pefeper Less limited than SOs though.

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

    There's actually a way that let you export a custom resource as far as I've gone with pushing the engine to let me do what I want. It requires using the advance exports style of export variables which isn't always something that you'd really want to do since that means that the script that wants to have that custom resource as an export type needs to be a tool.

  • @flow1194
    @flow1194 8 месяцев назад

    pretty animations

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

    Interesting... I've been using Nodes with exports to create systems like this but with resources you don't have to to worry about instancing them.

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

    There is more to it. You can separate your game code and assets in custom resources, and load them ONLY when needed.
    This means, when you make changes or updates, you only need to recompile smaller parts of your game, in much less time, and the updates become much smaller.
    It is a great way to debug, reduce loading times, setup loading transitions etc...
    There's a whole world of tricks hidden in there.

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

    this is awesome

  • @Niashi24
    @Niashi24 Год назад +3

    I think an updated version of this for 4.0 or just an overview of what stuff was changed/updated would be helpful. I'm thinking of migrating from Unity to Godot with 4.0 but scriptable objects form so much of my workflow at this point it would be nice to see how/if it transfers :)

    • @Pefeper
      @Pefeper  Год назад +4

      Yep, with 4.0 officially out now, I planned on making updated versions of my 3.x videos to reflect the new features. Hopefully it helps you out when I finally finish them!

  • @michaelzmyers
    @michaelzmyers 9 месяцев назад

    This video is amazing, thank you! I have a question. When you’re talking about enemy effects, you have your enemy effects class, and then timed explosion extending that. That makes sense. But then to drag it to your enemy, you’re dragging a tscn file and not a script. Do you have to create a resource file from the resource class you made just to be able to drag it onto your units?

    • @Pefeper
      @Pefeper  9 месяцев назад +1

      Yes you need to make a resource that uses your script. The script itself doesn't have any data, it just describes what the resource is. Think of the script as a class and the resources you make in the inspector as objects of that class

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

    what the hell this is exactly what i've been doing with scene instances but easier, thanks for the video!!!!!

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

    I think an Event bus is great use for these.

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

    This video was awesome. Will you make a 1st person shooter tutorial please... Keep up the good work..❤

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

      I definitely wanna make an FPS tutorial at some point, I just need to figure out how I can cram it into a short video haha

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

      @@Pefeper yeah thank you. Your videos are short but so helpful. I loved the jump one. That made so many things easier.

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

    A problem I'm having with resources right now is that when using exported variables, you should be careful when modifying the exported variable name. If you have a lot of "Effect" resources, and you change an exported variable name, you will lose all the data that was linked with that variable.
    Say you have a variable "name" for a resource, and you need to change it to "alias". You now have to re-set the value of "alias" for all resources you already have created.
    And if you use advance export, if you ever save a script with an error, it will reset ALL of your variables.
    That being said, be very careful on what variables you choose to export, as they can be very volatile during early stages of development. If you have a class and NEVER plan to modify the exported variable names, then storing data per resource through resources is "okay".

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

      I wonder if there's something similar to FormallySerializedAs.

  • @Snapper-gaming
    @Snapper-gaming Месяц назад +1

    this sounds like a much better way to create composition, instead of using nodes which has overhead, you can use this

  • @deamorta6117
    @deamorta6117 6 дней назад

    this is good

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

    YIN YIN!

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

    Can you make a tutorial on using resource to save a character in a character selection screen after using a character creator?

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

    just realized i already watched this, so im commenting again
    props to your somehow *really clickable* thumbnail

  • @1J03B
    @1J03B Год назад

    what's the advantage of using custom resources over using nodes?
    EDIT: Oh, do Nodes call the setters when you assign export var values in the editor?

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

    instead of extending resource you can just make a new node rename (for example fish)it and give it a script (automatically extends node) and put in class name, then make a new child node using the new node item in the list(the same as what you just made) and rename it (for example saltWaterFish) and right click on it and choose extend script and add the new class name, then do it again without extending script for each of your fishes and update the data values in the inspector

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

      Can you directly reference a Scene from another Scene?

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

    Gonkee had done something like this for save file system

  • @anonymouskitten4715
    @anonymouskitten4715 Месяц назад +1

    Besides saving and loading, can’t I do the rest with custom Nodes? What makes resources special?

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

    How would you use those export variables if you were creating something like a health manager script that's responsible for anything to do with health? Essentially a script/node that you would attach to the characterbody2d which holds the resource values? Is that against the whole "call down, signal up" mindset?

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

      If I understand you right, what you're proposing is a single node that has a reference to every health resource in the game? In that case, I guess it depends on how you use it, there's not really anything intrinsically wrong with manager classes, Godot even supports singleton instantiation with autoload scenes. But, you should have a compelling reason to structure the game in that way. If it can be done without the manager class without much tradeoff, that decentralized approach is probably better aligned with Godot's ethos

  • @kotgaf7332
    @kotgaf7332 3 месяца назад

    Is it really correct way? I've heard a lot what you should use composition instead on inheritance. And using resources looks like inheritance to me.
    For example, I have 100 monsters and each have 1-10 skills. Does each monster has to be resource?

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

    This is like react for game dev

  • @MladenMihajlovic
    @MladenMihajlovic 3 месяца назад +1

    Great video for resources - but maybe update it for godot 4...

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

    So... saving a giant world:
    Create a resource that is used to store important values (location, current state (alive, dead), whatever is important to your game)
    add a write to save singleton function
    add this resource to all objects important enough that they should be saved
    create a singleton that is used to save and load the objects important information
    in the main world object (the game node), use it to call the singleton's load method on loading of a level/the world
    on the information resource, use it to write to the save singletons data

  • @MCbbbg
    @MCbbbg 4 месяца назад +1

    Anyone trying to follow along now, the trigger_effect() functions need to be static in godot 4! I got stuck on that one for a good while

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

    1:40....
    you can...
    export values with ranges tho

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

    How did you overlook POSITON

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

    For the "Boost" example, how/what are you actually changing though? Like you're not changing the custom resource at runtime right? I'm a little confused as to this part of using custom resources as a data container.

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

      The boost is an example of changing the value in a resource at runtime. When you do that, all objects in the game with a reference to the resource will see the change at runtime

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

    I'm a big custom resource fan, just wish we could use them as export var type hints (which might be in Godot 4 i think?)

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

      Yeah, I'm hoping we can finally export them soon. As a minor workaround, you can use a setter on a resource variable that always sets it to a new resource of your desired type if it isn't one already (i.e. null, or a different resource type). It's far from elegant, but it works okay for many use cases

    • @Nothing-rc4zc
      @Nothing-rc4zc 2 года назад

      This is actually doable in 3.X. I posted another comment that explains how to do so.

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

    I mostly used custom resource to make a inventory system

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

    also in case you are struggling like i was its @export now. your welcome.

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

    I have a question about storing variables in a resource: Do they have to be export variables (@export in Godot4) or can they also be normal variables to be able to be stored?
    I would like to set my variables by script and not in the editor, so I am wondering if I need them to be export variables.
    For me its a bit confusing how you create an instance of a custom resource, do you do it in the Inspektor tab?

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

      I'm pretty sure Godot only serializes export variables, so those are the only ones that can be modified in the editor, saved, and loaded from disk. You can define regular variables and modify them at run time through a script, but you won't be able to easily save and load those changes. I'd recommend taking a look at a ConfigFile, it might be more the kind of thing you're looking for (assuming you want to save these variables). As for creating an instance of a resource, you can either do it from code using Resource.new() or you can create it in the editor like I showed in the video

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

      @@Pefeper Thx :) I will look it up!

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

    Could you help give more examples ? Im still confused. Like how can I use custom resources in a puzzle platformer game ?

    • @Mysda_
      @Mysda_ 9 месяцев назад

      Let's say you have a Kirby kind of game.
      An enemy has an effect that let's them spit fireballs. Kirby eats them and gets the same capacity. Well that could be the same custom ressources handling both enemies and Kirby and just passing it to change Kirby's toolset.

  • @ekagaurangadas
    @ekagaurangadas 9 месяцев назад

    Can you use Resources with C#?