SETTINGS MENU in Unity
HTML-код
- Опубликовано: 3 июн 2024
- Learn how to make an in-game options menu using Unity!
● Sign up for the Devdog Christmas Calender: bit.ly/DevdogGiveaway
● START MENU in Unity: • START MENU in Unity
● Ultimate Game UI: www.assetstore.unity3d.com/#!...
❤️ Donate: www.paypal.com/donate/?hosted...
····················································································
► Join Discord: / discord
♥ Subscribe: bit.ly/1kMekJV
● Website: brackeys.com/
● Facebook: / brackeys
● Twitter: / brackeystweet
····················································································
Edited by the lovely Sofibab.
····················································································
► All content by Brackeys is 100% free. We believe that education should be available for everyone.
❤️ Donate: www.paypal.com/donate/?hosted...
····················································································
♪ Baby Plays Electro Games
teknoaxe.com/cgi-bin/link_code...
by the way guys, if you cannot drag in the resolution drop down, you probably have a text mesh pro dropdown one. To solve this you can do 'public TMPro.TMP_Dropdown resolutionDropdown;' instead of the 'public Dropdown resolutionDropdown'. I hope this helps on anyone who is stuck.
You're a life saver
nice,
Thank you for your help
Thank you so much
You are the king of mankind
You're the best!
0:00 Intro
1:13 Volume
5:36 Graphics
7:48 Full Screen
9:05 Resolution
Thx man, now that they are not working as a youtuber anymore i dont feel guilty about not watching the whole vid lol
Someone get this man a cookie!
@Ninja Boy you're probably doing something wrong then.
Dude every time i need to learn something, i go on youtube and every time, you make a video about what i needed at that moment, you kidda scary tho
Lol yall crazy lol
Elvishious the fbi man tells him
Elvishious That’s pretty insane.
for everyone who's wondering, there is actually a tool that let's you know what people search the most :)
@@NicoFye Yeah it's called Google trends
Just wanted to let you know your tutorials are phenomenal!
I really appreciate the way you add in Debug.Logs as you go so we can see it working as we go rather than just hoping it all works at the end of the tute.
Stay awesome man!
Small tip
Select the audiosource you want to control volume > Output > None→Master(AudioMixer). :D
Thank you!
thx
Thank you!
make this top comment
Hey man, I followed the tutorial step by step and even followed your comment. Still my slider seems to have no effect on the volume. Any suggestions?
Probably one of the few youtubers who care about their subscribers and take their feedback!
For the resolutions option, if anybody is seeing a lot of seemingly duplicate options (I was), it's because of refresh rates - you have 1920x1080@60hz and 1920x1080@144hz for example. What I did was add the refresh rate into the dropdown text options:
string option = resolutions[i].width + " x " + resolutions[i].height + " @ " + resolutions[i].refreshRate + "hz";
Thank you!
@WasNeverBrandon No idea, but there definitely is a way.
I literally just switched back from my Unity program to google "why do i have duplicate resolutions?" Just to see your comment conveniently right before I clicked away. Bless your soul, you beautiful bastard! Thank you!
Thank you bro!
this is exactly what I was looking for
You are the best, Brackeys !
It's true what they all say, you are THE Unity guy.
Sure I know others exist, but the sheer amount of topics you discuss, from 2d to 3d, to settings and multiplayer. Thanks so much!
It's been long overdue for me, but FINALLY getting into Unity and C# :D
At 5:10 use
audioMixer.SetFloat("Volume", Mathf.Log10(volume) * 20);
instead since the audiomixer volume is not linear
Edit: make sure the varibles match yours ie. same caps and spellings
Thanks dude. Solved a problem I was having.
Thank you!
Thank you. For this to work the Slider object must have Min and Max values of 0.0001 and 1 respectively.
@Zoom the second time its lower case
this only works if you change the "Volume" to "volume"
it took me 10 minutes to figure out that the "Volume" wasn't supposed to be caps.
Brackeys: Its an amazing pack thats free on the asset store
The asset store: That'll be $25 please
True, I dont know which asset to use...
@@infleo23 bro u can just draw the them urself its easy
:)
@@aminkafnaweez2595 wait.. is it really easy???
@@aminkafnaweez2595
you underestimate just how bad some of us are at art.
Or more importantly, how long it takes us to figure out some digital art programs.
@@redgeoblaze3752 that is why all my menus consist of tmp text with a nice gradient and a dark semi-transparent panel underneath it. Good enough looking ui and it's really easy to make.
This is what i love about Brackeys, The quality of their tutorials.
YOU ARE BADASS MAN!! I REALLY LOVE YOU DUDE!
At 14:30 there´s a mistake in the script. He compares resolution[i] with Screen.currentResolution but that´s wrong. CurrentResolution gives the Resolution of the monitor but we want to compare it with the Resolution of the window in case we change the scene. That´s why we have to compare resolution[i].width with Screen.width and resolution[i].height with Screen.height.
Patrick H YOU HAVE SAVED ME THANK YOU VERY MUCH
i love you. this video assisted me in creating my first project and this was a huge stuck. thank you
Thanks a bunch man! i was wondering why my game kept resizing to full screen when I opened my settings lol
Could you copy full script with resolution for me, becouse im having some trouble.
love you my dude, you saved my life :D
This tutorial is what the beginner gamedev community has been waiting for for ages now :D
Thanks for creating this!
We asked for it, we got it, we enjoy it. :D
...... This is hardly a settings menu, what about aspect ratio, AA, Different volume settings for like music/sfx/master volume, what about controler and keyboard binding, or what about SAVING the settings for the next time a player opens the game........
- Aspect ratio is just a modified resolutions dialog with resolution shown in lower fractions.
- The AA can be accessed through the post-processing stack, which I believe he has done a tutorial on already.
- The different volume settings would be done by sending AudioSource sounds to specific mixers instead of master (SFX mixer, Music mixer) and then modifying them instead of the master as he did in this video.
- The controller and keyboard bindings can be accessed and modified (with much more work) through the Input class etc.
- Saving the settings is just using PlayerPrefs, which he has done a tutorial on already.
Yes because telling someone what they are is totally the same thing as showing someone how to set them up........
Watch Brackey's high score tutorial and you have your answer for both how to save custom prefs into a prefs and load it back. In his previous tutirials you can also find the answer how to detect inputs, keyress etc and change those settings. Then just combine all of them together and you can get a fully functional options menu :)
brian ou have to learn a few things by you own...
If it weren't for Brackeys, not only would I have maybe thought about giving up Game developing, thinking it would be too boring or difficult, or I would have kept doing it but never find so much joy in learning the basics. Thanks man!
If your slider is affecting the audio mixer values but not changing the sound volume of your audio, you have to drag the mixer into the slot of your audio clip on the inspector to affect the actual sound of each clip.
I know this was 3 months ago but thank you so much
thanks 👍
thank you so much
This video has been really really helpful! I tried to make an option menu, and some stuff didn't work, after watching this video, I found what I did wrong. Thanks, Brackeys!
Love the christmas hat btw
I just found this channel yesterday this is so helpful and amazing. I don't know how else to thank you as soon as I have a stable income I will become a patron supporter!!!
Love the tutorial. Wish you were still making them.
@ 11:45 - 12:13 try this line instead:
string option = resolutions[i].width + " x "+ resolutions[i].height +" @ " +resolutions[i].refreshRate + " Hz";
This will populate the list nicely with refreshRate information intact
edit: not sure yet how to apply the refresh rate as well.
Loving these UI tutorials. Keep 'em coming!!!
Dude, you don't even know how your tutorials have been helping me, thanks.
Hi! Thanks for your video! I've got something you might find useful.
Instead of this:
if(resolutions[i].width == Screen.currentResolution.width && resolutions[i].height == Screen.currentResolution.height)
You can use the Equals method:
if(resolutions[i].Equals(Screen.currentResolution))
It compares objects and returns true, if their fields are equal.
Hope it might help someone to shorten their code!
Евгений Кучерявый I think == is an implicit .equals call so you can just directly use ==
== is slower than .Equals, his comment deserves more likes.
Do you still need the last 3 lines:
m_ResolutionDropdown.AddOptions(m_Options);
m_ResolutionDropdown.value = m_CurrentResolutionIndex;
m_ResolutionDropdown.RefreshShownValue();
@@awawa5594 yes
If you want to set the default quality to high for instance you can do that within the dropdown component by setting 'value' to 2. I struggled with this a bit at first :P
Thanks!
My GOAT, 6 years later and all of this is still helpful
I was just looking for this! Thank you yet again Brackeys!!!!!
For anyone with troubles in build where the options can get duplicated in the dropdown; this is in fact not a bug, it is due to the varying refresh rates available. Unity editor has a consistent 60Hz, but when an application is built, there can be multiple differing rates between the same resolution.
A fix can be just adding the refresh rate to the option:
string option = resolutions[i].width + " x " + resolutions[i].height + ", " + resolutions[i].refreshRate + "Hz";
Is there a way to do it without the refresh rates? I tried comparing the old vs new value, got the drop down list to be only unique refresh rates... but when I select one, I guess it takes it's index form the drop down and applies it to the available resolutions.
For everyone who gets the same resolution on the dropdown even if they already changed it:
This happens when on window mode. The Screen.currentResolution will get the 'desktop resolution' instead of the game's current resolution.
To fix this, simply change:
` if(_resolutions[i].width == Screen.currentResolution.width && _resolutions[i].height == Screen.currentResolution.height) `
TO
` if(_resolutions[i].width == Screen.width && _resolutions[i].height == Screen.height) `
If you didn't get it, change "Screen.currentResolution.width" to "Screen.width" (and also height) during the if statement on the for loop. This will get the game's current resolution.
God Bless and Happy Coding! =)
Holy hell this solved all my problems.
it would save everything but as soon as a scene loaded it changed the resolution
@@tophatsntales Happy to help!
what canvas settings did you have? mine doesnt scale properly and the resolution gets considerably lower if you pick anything but default
Can't thank you enough for this! Didn't expect to learn anywhere near this much!
I'm always so happy when I finish writing the scripts and there are no errors
You can also save all theses values in the PlayerProperties for load the settings each time you change or restart scenes
How? It doesnt work for me
If you are using a TextMeshPro DropDown instead of the default Dropdown change:
public DropDown resolutionDropdown;
to
public TMP_Dropdown resolutionDropdown;
and make sure that you have
using TMPpro; at the top of your script
wow.. thx a lot bro.. I was wondering what went wrong for a sec lol
Thx, help me a lot
legend
I came here looking for a brave soul that solved my problem without me asking, internet delivered once again... Thanks man!
Thx, man, but 1 mistake using TMPro; without "p"
I almost never comment on videos but dude you just saved my programming project!
DUUUDE, just arrived at the point in my personal project where I have to implement the settings menu! Best timing ever!
If you see the bar in the MainMixer go up and down but the volume doesn't change you have to add:
public AudioMixerGroup mixerGroup; in your AudioManager script and then inside the foreach(Sound s in sounds) after the s.source = gameObject.AddComponent();
you have to put s.source.outputAudioMixerGroup = mixerGroup; after that open the MainMixer icon in your assets and drag the "Master" inside the public mixerGroup in editor!
tysm!
remember to Increase volume on "Audio Mixer", and add Output -> Master to your "Audio source" component... :D
Thank you, you saved my life!! :D
THANK YOU SO MUUUUUUUUCHHHHHHHHHHHHHHHH
Great video! Exactly what I was looking for today. Keep up the awesome work man. Thank you.
as always, your channel has been a big help to me and my projects!
Please make a tutorial on how to map controller input.
it's in project settings > Input
can you make a tutorial on how to save these settings when the game gets closed? would this also apply to other things in the game (lives, unlocked levels, etc.)
so unity doesn't load these settings after restart? did you check it?
He did a video on saving and loading values. Maybe you want to check that out.
yes i need that too
@@Definitely_a_Fox can you please give me the link?
@@Croccolucho Okay, a quick look through their video''s was all you needed to do.
ruclips.net/video/XOjd_qU2Ido/видео.html
if brackeys doesn't have a tutorial on it, it can't be done. this guys saved me so many headaches
Great tutorial Brackeys!! Keep up the good work!
I couldn't stop laughing at the start of the video!
Nice look Brackeys :)
if anyone has errors in their script, try this:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.UI;
using TMPro;
public class SettingsMenu : MonoBehaviour{
public AudioMixer audioMixer;
public TMP_Dropdown resolutionDropdown;
Resolution[] resolutions;
void Start ()
{
resolutions = Screen.resolutions;
resolutionDropdown.ClearOptions();
List options = new List();
int currentResolutionIndex = 0;
for (int i = 0; i < resolutions.Length; i++)
{
string option = resolutions[i].width + "x" + resolutions [i].height;
options.Add(option);
if (resolutions[i].width == Screen.currentResolution.width && resolutions[i].height == Screen.currentResolution.height)
{
currentResolutionIndex = i;
}
}
resolutionDropdown.AddOptions(options);
resolutionDropdown.value = currentResolutionIndex;
resolutionDropdown.RefreshShownValue();
}
public void SetResolution (int resolutionIndex)
{
Resolution resolution = resolutions[resolutionIndex];
Screen.SetResolution(resolution.width, resolution.height, Screen.fullScreen);
}
public void SetVolume(float volume)
{
audioMixer.SetFloat("volume", volume);
}
public void SetQuality (int qualityIndex)
{
QualitySettings.SetQualityLevel(qualityIndex);
}
public void SetFullscreen (bool isFullscreen)
{
Screen.fullScreen = isFullscreen;
}
}
(the text mesh pro is only if you are using it)
Thank you so much, I wasn't able to do resolution dropdown.
thanks, your a life saver. i dont know why mine wasnt working
We need more people like you.
Amazing tutorial, helped me get through volume slider and graphics options, thank you
Everything works perfectly and so simple! Thank you so much, with this video today i built the game for the first time.
To people like me who's having trouble with the volume here's something that works:
public AudioMixer audioMixer;
[SerializeField] AudioSource audioSrc;
public float Nvolume = 1f;
void Update()
{
audioSrc.volume = Nvolume;
}
public void SetVolume(float volume)
{
Nvolume = volume;
audioMixer.SetFloat("volume", Nvolume);
}
TKS
For those whose volume doesn't change after using the slider, add this to your code:
AudioMixer audioMixer = Resources.Load("MainMixer");
AudioMixerGroup[] audioMixGroup = audioMixer.FindMatchingGroups("Master");
audioSource.outputAudioMixerGroup = audioMixGroup[0];
Also, you have to go to the audiosource component of the audioclip you want to lower the sound of and change the output section to Master(AudioMixer).
Thanks!
Best tutorial i have ever seen about unity's ui. Nice.
Dude u are so great, I love these tutorials, gonna pass my uni degree based on half of this stuff 😂😂 keep it up 😍
So I know this is an old video, but the Graphics dropdown only actually works when my mouse is hovering over the Quality section in the Project Settings tab
1:15 Volume
5:40 Graphics
7:50 Fullscreen
9:15 Resolution
Thx bro you always been there helping even tho you gone now you still helping people
Thank you for the tutorial! This is much easier than I thought it would be!
dat christmas hat tho :D
TimTube i thought it was judge hair 😀
Lol deutscher iz da
Make Tutorial about when you press esc you can resume game,quit,and option
He explain this in one of the "Tower Defense" videos. In this one ruclips.net/video/789gM9R3htc/видео.html
Thank you brackeys, this is so much easier than the way I was trying to accomplish it!
just saw this tutorial and implemented it! new patreon member incoming !!!
on Low Quality my Images and Fonts are the same quality as in High. How can I change this?
In dropdown, change the value to 2
@@muhammadalfin2691 which value tho
Does anyone has the same bug with builded version in resolution dropdown, where some resolutions are duplicated? You can see same in video (16:23) 720 x 480, 720 x 480. Btw thank you for your professional work, you are awesome:)
For me, all the refresh rates are the same (40Hz)! Any idea as to why?
Brackeys, thank you so much you really have helped me learn a lot by doing this, thank you so much man you're the best!
the best channel i learnt from it for ever
sorry but i have a problem when my option menu is loaded after playing one scene, it gets to default..(which is high)
5:36 For some reason, when I drag the handle, it either goes to 0 or -80 but never in between P:
Thanks for the amazing Tutorials dude!
i had issue with my text being crisp and clear in the editor but blurried when building the game , this totally fixed it AND it wasn't even related to that LOL! thanks brackeys you the man
For those of you getting several of the same resolutions in your resolution drop down, you can get rid of them by going into Edit, Project Settings, Player, Resolution and Presentation and find the Support Aspect Ratios, then untick 4:3, 5:4, and other. You will no longer have the smaller number of resolutions but you won't have any duplicates. The lowest resolution you can then choose is 1280 x 720 (or at least it is for me). If you need something smaller, you may have to do some coding or live with the duplicates..
for some reason i see 4 - 8 of the same resolutions when i use the dropdown, fixes?
Same problem. Any fix?
Yellow GD dont worry, when u build the game its good.
nope still a problem
really?, mine just got Fixed so i dont think i can help you much on this
Having the same problem, works good at editor, but there is some same resolutions at the build
Thanks. This stuff is pretty easy but it's nice to see you do it!
This tuturial is very completed. Thank you so much!
To fix the bug with repeat resolution you need to disable the extra support for the aspect ratio in the player settings. After that, the bug with the rotation resolution will be lost. P.S. sorry for the bad english.
People need it in the top!
thanks a ton!
I cant find the extra support T_T, Help
@@moenator509 me too :(
@@zhuohuichen9444 The solution is pretty simple actually the duplicates are different refresh rates for the resolutions, since brackeys only picked the sizes of width and height in the string you can't see then you can keep the duplicates and add the refresh rates using something like string option = resolutions[i].ToString();
or filter all non-60hz results using
resolutions = Screen.resolutions.Where(resolution => resolution.refreshRate == 60).ToArray(); istead of resolutions = Screen.resolutions; just make sure you are using System.Linq o/
@@mikecastilho1010 Also you can do this
List options = new List();
int currentResolutionIndex = 0;
for (int i = 0; i < resolutions.Length; i++)
{
string option = resolutions[i].width + "x" + resolutions[i].height + ":" + resolutions[i].refreshRate + "Hz";
options.Add(option);
if(resolutions[i].width == Screen.currentResolution.width && resolutions[i].height == Screen.currentResolution.height && resolutions[i].refreshRate == Screen.currentResolution.refreshRate)
{
currentResolutionIndex = i;
}
}
resolutionDropdown.AddOptions(options);
resolutionDropdown.value = currentResolutionIndex;
resolutionDropdown.RefreshShownValue();
public void SetResolution(int resolutionIndex)
{
Resolution resolution = resolutions[resolutionIndex];
Screen.SetResolution(resolution.width, resolution.height, Screen.fullScreen, resolution.refreshRate);
}
That dynamic float argument is missing from my functions list in the editor. How to write it manually in the script?
download new unity 2019.2.9f1
@@defoxik Mine is the 2019.3.0a12 version and I still have the same problem! Does any one know what do I have/should/must do, pls?!
@@luccasyamnotho3280 forum.unity.com/threads/slider-on-value-changed-broken-in-osx.746090/
You can go into debug mode and select the "Event Defined" option there to get the same result.
Still the greatest source of info on internet
The best tutorial ever. Thank you for being such a big help.
The Ultimate Game UI costs now😭
nOOOOOOOO!!!!!
I know, its so annoying
It's 25$😭
NO GOD! NO GOD! PLEASE NO NO NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
@@west770 I mean it would be completely okay if it was not free in the very beginning. But he changed the price right after this video (it is 2nd time I am watching this video). It is not a nice thing to do.
when i use the slider the audio mixer changes but the sound does not increase or decrease at all
I gave same problem.
i know u wrote it 8 months ago, but did u find solution?
@@kondzio3500 sure, go to your audio source, there should be a slot for an audio mixer. This is to tell which sound to mute and which to not, you can have 2 audio mixers: music and sfx, and 2 sliders and that is so when you mute music sfx doesnt get affected and this is the solution
omg, i have learned so much in 17min, dude i love your work :D
I just subscribed to this channel and thinking why didn't i do it before its the best! you teach the best way
1:03 was free, feelsbadman
Yeah probs got an influx of traffic from this vid and decide to price it up :(
FeelsOkayMan there are probably better free alternatives
the audio slider does not saved when changing scenes, looks like a bug.... can you combine this volume slider with another tutorial AudioManager singleton ?
i consider myself new to coding and unity overall and even i know this is just sloppy. like you know what problems will happen before they even happen type of sloppy.
@@JayRondon It changes when going to new scenes because the options aren't being saved. You'll need to implement a save and load system for settings
I second this question. Would like a tutorial of the audio mixer (or the slider) working with AudioManager
@@XiaoZong322 Brackeys is good and all, but most of times he doesn't show all nuances of his scripts and how to fix simple problems. You will need to jump around RUclips to find solutions to very simple problems arising from his scripts to fix them. Here what i found and used. First link to slider problem (slider doesn't work properly - like starting to tune down sound only after 50% of slider) and second video about mute button. Hope that helps.
gamedevbeginner.com/10-unity-audio-tips-that-you-wont-find-in-the-tutorials/ - 9-th tip, slider problem.
ruclips.net/video/OeZuwgG6HJM/видео.html - mute button video.
try this guys :
ibb.co/GFCWS2v
Spanish: El mejor tutorial de Unity es este. Yo pude programar con exito el menu de mi juego. Muchas gracias, saludos desde Colombia. English: The best Unity tutorial is this one. I could reprogram sucesfully the menu of my game. Thank you very much, greatings for Colombia. ☺😀👏👍
Thank you, that is the greatest Christmas present! :-D Exactly what I've been waiting for :-D
Merci beaucoup
hmm, I did everything like you showed in this video and my master volume changes with volume slider, but music in my game doesn't change at all (and other sound effects as well)! That is very weird and I am stuck 🤔
found the solution? cause i think i have the same thing; and nothing seems to work...
Yeah, in Audio Source Component (where you set your audio) add MainMixer->Master in the Output.
Thank you so much! that was exactly what i did wrong.
how did you connect the audio in the slider?
You just me a lot of headache and time.. Thank you, you goddamn bloody legend
That was an amazing tutorial! Congrats for it and thank you for that! Would you be planning on creating a save/load system any time soon?
it's so insane. I just made a game in the 2-week holidays because of you?
Thanks so much stranger. I mean god brackeys =) haha
Can yo make a video on character selection/customization?
I know i'm pretty late, but blackthornprod have some videos on character customization!
I have ALWAYS wanted to make a rhythm game! Like those Hatsune Miku Diva games for PS4. However, it seems really complicated with how to make it all works. Can you explain the basics for a rhythm game? - How to force press of certain buttons, multiple buttons, timing rate (cool, fine, sad, worst etc), keeping a combo/breaking a combo, hold notes and etc. You would really be of help! :D
Honestly, without your tutorials i would never finish my game. BIG THANK TO YOU!
Can i play your game?
i also want to play your game :>
Nice video! Thanks a lot for the ui videos!
Thanks for the tutorial I'm getting the following error:
NullReferenceException: Object reference not set to an instance of an object
SettingsMenu.Start () (at Assets/UI/Scripts/SettingsMenu.cs:20)
Same but i dont know how to fix it
Bit of a random question. I recently watched the "unite Austin 2017 game architecture with scriptable objects" talk which talked about modular scripting.
Any chance you'd be interested in breaking down his core points into an easier to follow lesson for beginners?
Example: (ELI5) How exactly does a player and an enemy both use the same HP script? (Where is the data stored if not on the individual characters?)
Well, as an example you can have an HP class which will hold the health value. This will be the base class. Then you will inherit from that class instead of MonoBehaviour with another class called EnemyHP and another one called PlayerHP. Now you have 3 classes. 1 - HP class, 2 - EnemyHP class, 3 - PlayerHP class. Then in the HP class you will have an empty take damage function or OnColliderEnter class, but it has to be a virtual class just so you can override in the class you are inheriting it on. Then, you make another take damage or OnColliderEnter class in the EnemyHP and PlayerHP classes as ex: 'protected override void OnColliderEnter() {}' Then for EnemyHP, you can say if a bullet with Player tag entered it you can subtract from the base hp. Or vice versa. Any variable in base class can be accessed from child classes as long as variable is 'protected' or 'public'. So, even though you don't actually see the variable in that class you can still access it just like a GameObject type since it is from MonoBehaviour.
Anyway, it sounds difficult but if you follow what I wrote above step by step you should understand inheritance which helps a lot making games. Basically however, you make a base class, two different classes inherit from that base class. You assign those 2 classes in the inspector to Player and Enemy. Then variables from base class will be exposed on inspector. Then you populate the scripts as I said above. Then next time you want to make a new HP script all you need is a new class with the difference of how they take damage.
However, if EVERYTHING is same with Player and Enemy, how they take damage which means friendly fire included then you can use the same exact same script anyway. I do not know if it was clear but if you don't understand something I can try to explain more. Good day!
I watched that talk recently and for ludum dare 40 I tried to implement the principles from that talk to make my game so I might be able to shed a bit of light on this. Its kind of tricky to explain through the comments but hopefully you can get something out of it.
Scriptable objects are saved as assets, so for example you can create a scriptable object that holds a float (lets call its class FloatHolder, all it needs to do is inherit from Scriptable Object and have a public float field), then in both your enemy and player class you can put "public FloatHolder floatholder", and they will now have a field to drag a FloatHolder in. You can create as many FloatHolder instances as you want and name them individually, but you can also have multiple objects reference the same instance of FloatHolder, so for example you can have one instance of FloatHolder that you use to track the players HP, lets call it playerHPFloatHolder, and you can reference it from both the player (to modify it based on healing/taking dmg), the enemy(to modify it or to modify enemy behavior depending on player hp), the game manager(to end the game if you get below 0hp), etc. Experiment with it and the principles of the design pattern will become more clear I think
Can't wait for you're MAKING OF Ludum Dare video!
It actually works now! Thanks to Brakeys.
No offense to you Brackeys
Nice tutorial, but I am a bit surprised that it didn't touch upon the volume slider being logarithmic (due to it being tied with the sound in dB). The way it is showcased here, you get a very sensitive slider, which is not very user friendly at all
You're so very right, do you have a working solution of how to modify it to work perfectly from 0% to 100% of volume?
@@whereistheguru. try this
audioMixer.SetFloat("volume", Mathf.Log10(volume) * 20);
[be aware of variable names]
You are THE best programmer I have ever seen!!!!:)
my game has so many bugs and i was so frustating that never things worked but i watched this video, everything worked and now i am motivated to keep going on my game;)