{"id":110,"date":"2020-06-10T01:40:43","date_gmt":"2020-06-10T01:40:43","guid":{"rendered":"https:\/\/lucyestela.com\/dev\/?p=110"},"modified":"2021-03-02T03:00:18","modified_gmt":"2021-03-02T03:00:18","slug":"static-variables-and-methods","status":"publish","type":"post","link":"https:\/\/lucyestela.com\/dev\/unity\/static-variables-and-methods\/","title":{"rendered":"Static Variables and Methods &#8211; Unity"},"content":{"rendered":"<div class=\"boldgrid-section\">\n<div class=\"container\">\n<div class=\"row\">\n<div class=\"col-md-12 col-xs-12 col-sm-12\">\n<p class=\"\">So what does this word &#8220;static&#8221; do to variables and methods? Well a couple of things.<\/p>\n<ol class=\"\">\n<li>static variables and methods that are public are accessible from anywhere without having to first reference or instantiate the class that they are in. Note though that if they are private, they can not.<\/li>\n<li>They make variables class variables, rather than instance variables. This comes in handy with games especially when you are creating multiple enemies or bullets or obstacles and you want to keep a total count of them. Rather than each instance of the enemy\/bullet\/obstacle keeping a count, the class as a whole keeps count.<\/li>\n<\/ol>\n<pre class=\"\"><span style=\"font-family: Menlo;\"><span style=\"color: #009695;\">using<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">UnityEngine<\/span><span style=\"color: #222222;\">;<\/span>\r\n<span style=\"color: #009695;\">using<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">System<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">Collections<\/span><span style=\"color: #222222;\">;<\/span>\r\n\r\n\r\n<span style=\"color: #009695;\">public<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #009695;\">class<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #3363a4;\">Obstacle<\/span>\r\n<span style=\"color: #222222;\">{<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #888a85;\">\/\/Static&nbsp;variables&nbsp;are&nbsp;shared&nbsp;across&nbsp;all&nbsp;instances&nbsp;of&nbsp;a&nbsp;class.<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #009695;\">static<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #009695;\">int<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">obstacleCount<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">=<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #db7100;\">0<\/span><span style=\"color: #222222;\">;<\/span>\r\n\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">Obstacle<\/span><span style=\"color: #222222;\">()<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">{<\/span>\r\n\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">}<\/span>\r\n\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #009695;\">static<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #3363a4;\">Obstacle<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">SpawnObstacle<\/span><span style=\"color: #222222;\">()<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">{<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #888a85;\">\/\/Increment&nbsp;the&nbsp;static&nbsp;variable&nbsp;to&nbsp;know&nbsp;how&nbsp;many<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #888a85;\">\/\/objects&nbsp;of&nbsp;this&nbsp;class&nbsp;have&nbsp;been&nbsp;created.<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">obstacleCount<\/span><span style=\"color: #222222;\">++<\/span><span style=\"color: #222222;\">;<\/span>\r\n\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #3363a4;\">GameObject<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">oGO<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">=<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">Instantiate<\/span><span style=\"color: #222222;\">&lt;<\/span><span style=\"color: #3363a4;\">GameObject<\/span><span style=\"color: #222222;\">&gt;(<\/span><span style=\"color: #222222;\">GameManager<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">ObstacleSO<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">GetObstaclePrefab<\/span><span style=\"color: #222222;\">());<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #3363a4;\">Obstacle<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">obst<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">=<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">oGO<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">GetComponent<\/span><span style=\"color: #222222;\">&lt;<\/span><span style=\"color: #3363a4;\">Obstacle<\/span><span style=\"color: #222222;\">&gt;();<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #009695;\">return<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">obst<\/span><span style=\"color: #222222;\">;<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">}<\/span>\r\n<span style=\"color: #222222;\">}<\/span><\/span><\/pre>\n<p class=\"\" style=\"font-family: Alegreya; font-weight: 400;\" data-font-family=\"Alegreya\" data-font-weight=\"400\" data-font-style=\"\">&nbsp;<\/p>\n<p class=\"\">Now one of the cool things about having a static method is that you can reference them directly and I&#8217;ll show you the code for that here.<\/p>\n<pre class=\"\"><span style=\"font-family: Menlo;\"><span style=\"color: #009695;\">using<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">UnityEngine<\/span><span style=\"color: #222222;\">;<\/span>\r\n<span style=\"color: #009695;\">using<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">System<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">Collections<\/span><span style=\"color: #222222;\">;<\/span>\r\n\r\n<span style=\"color: #009695;\">public<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #009695;\">class<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #3363a4;\">GameManager<\/span>\r\n<span style=\"color: #222222;\">{<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #009695;\">void<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">Start<\/span><span style=\"color: #222222;\">()<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">{<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #009695;\">for<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">(<\/span><span style=\"color: #009695;\">int<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">i<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">=<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #db7100;\">0<\/span><span style=\"color: #222222;\">;<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">i<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">&lt;<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #db7100;\">3<\/span><span style=\"color: #222222;\">;<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">i<\/span><span style=\"color: #222222;\">++<\/span><span style=\"color: #222222;\">)<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">{<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">Obstacle<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">obst<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">=<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">Obstacle<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">SpawnObstacle<\/span><span style=\"color: #222222;\">();<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #3363a4;\">Vector3<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">pos<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">=<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #3363a4;\">ScreenBounds<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">RANDOM_ON_SCREEN_LOC<\/span><span style=\"color: #222222;\">;<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">obst<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">transform<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">position<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">=<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">pos<\/span><span style=\"color: #222222;\">;<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">}<\/span>\r\n\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #888a85;\">\/\/You&nbsp;can&nbsp;access&nbsp;a&nbsp;static&nbsp;variable&nbsp;by&nbsp;using&nbsp;the&nbsp;class&nbsp;name<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #888a85;\">\/\/and&nbsp;the&nbsp;dot&nbsp;operator.<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #009695;\">int<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">x<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">=<\/span><span style=\"color: #222222;\">&nbsp;<\/span><span style=\"color: #222222;\">Obstacle<\/span><span style=\"color: #222222;\">.<\/span><span style=\"color: #222222;\">obstacleCount<\/span><span style=\"color: #222222;\">;<\/span>\r\n<span style=\"color: #222222;\">&nbsp;&nbsp;&nbsp;&nbsp;<\/span><span style=\"color: #222222;\">}<\/span>\r\n<span style=\"color: #222222;\">}<\/span><\/span><\/pre>\n<p class=\"\">&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"boldgrid-section\">\n<div class=\"container\">\n<div class=\"row\">\n<div class=\"col-md-12 col-xs-12 col-sm-12\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>So what does this word &#8220;static&#8221; do to variables and methods? Well a couple of things. static variables and methods that are public are accessible from anywhere without having to first reference or instantiate the class that they are in. Note though that if they are private, they can not. They make variables class variables, &#8230; <a title=\"Static Variables and Methods &#8211; Unity\" class=\"read-more\" href=\"https:\/\/lucyestela.com\/dev\/unity\/static-variables-and-methods\/\" aria-label=\"More on Static Variables and Methods &#8211; Unity\">Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"bgseo_title":"","bgseo_description":"","bgseo_robots_index":"index","bgseo_robots_follow":"follow","footnotes":""},"categories":[58],"tags":[7,25,4],"class_list":["post-110","post","type-post","status-publish","format-standard","hentry","category-unity","tag-c","tag-static","tag-unity"],"_links":{"self":[{"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/posts\/110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/comments?post=110"}],"version-history":[{"count":9,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/posts\/110\/revisions"}],"predecessor-version":[{"id":236,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/posts\/110\/revisions\/236"}],"wp:attachment":[{"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/media?parent=110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/categories?post=110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lucyestela.com\/dev\/wp-json\/wp\/v2\/tags?post=110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}