{"id":216,"date":"2016-02-26T02:29:26","date_gmt":"2016-02-26T08:29:26","guid":{"rendered":"http:\/\/mageduels.com\/?p=216"},"modified":"2016-02-26T02:29:26","modified_gmt":"2016-02-26T08:29:26","slug":"scriptableobjects","status":"publish","type":"post","link":"http:\/\/mageduels.com\/?p=216","title":{"rendered":"ScriptableObjects"},"content":{"rendered":"<p>So because a lot of the parts of Unity are new to me, I may not have built things in the greatest way&#8230; at least not on the first pass.<\/p>\n<p>Originally I wrote the spell system with a game object that implements a script that just holds information about the spell.<\/p>\n<p><span style=\"font-family: monospace;\"><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">class<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">Spell<\/span><span style=\"color: #333333;\">:<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">MonoBehaviour<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">{<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">KeyCode<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">key<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0 \u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">GameObject<\/span><span style=\"color: #333333;\">\u00a0effect<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">string<\/span><span style=\"color: #333333;\">\u00a0t<\/span><span style=\"color: #333333;\">ype<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">string<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">words<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">castTime<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">manaCost<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">effectValue<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">string<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">effectTarget<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">string<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">effectType<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">delayTime<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">expireTime<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">}<\/span><\/span><\/p>\n<p><a href=\"http:\/\/mageduels.com\/wp-content\/uploads\/2016\/02\/SpellManager.png\" rel=\"attachment wp-att-218\"><img loading=\"lazy\" class=\"size-medium wp-image-218 aligncenter\" src=\"http:\/\/mageduels.com\/wp-content\/uploads\/2016\/02\/SpellManager-202x300.png\" alt=\"SpellManager\" width=\"202\" height=\"300\" srcset=\"http:\/\/mageduels.com\/wp-content\/uploads\/2016\/02\/SpellManager-202x300.png 202w, http:\/\/mageduels.com\/wp-content\/uploads\/2016\/02\/SpellManager.png 276w\" sizes=\"(max-width: 202px) 100vw, 202px\" \/><\/a><\/p>\n<p>So after watching a tutorial on <a href=\"http:\/\/unity3d.com\/learn\/tutorials\/modules\/beginner\/live-training-archive\/scriptable-objects\">ScriptableObjects<\/a>\u00a0I have begun moving my spell system over.<\/p>\n<p><span style=\"font-family: monospace;\"><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">class<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">SpellList<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">:<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">ScriptableObject<\/span><span style=\"color: #333333;\">\u00a0<\/span><br \/>\n<span style=\"color: #333333;\">{<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">List<\/span><span style=\"color: #333333;\">&lt;<\/span><span style=\"color: #3364a4;\">Spell<\/span><span style=\"color: #333333;\">&gt;<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">spellList<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">}<\/span><\/span><\/p>\n<p><span style=\"font-family: monospace;\"><span style=\"color: #333333;\">[<\/span><span style=\"color: #333333;\">System<\/span><span style=\"color: #333333;\">.<\/span><span style=\"color: #3364a4;\">Serializable<\/span><span style=\"color: #333333;\">]<\/span><br \/>\n<span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">class<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">Spell<\/span><span style=\"color: #333333;\">\u00a0<\/span><br \/>\n<span style=\"color: #333333;\">{<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">string<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">spellName<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #f57d00;\">&#8220;<\/span><span style=\"color: #f57d00;\">New<\/span><span style=\"color: #f57d00;\">\u00a0<\/span><span style=\"color: #f57d00;\">Spell<\/span><span style=\"color: #f57d00;\">&#8220;<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">Texture2D<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">spellIcon<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">null<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">KeyCode<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">hotkey<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">null<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">ParticleSystem<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">spellEffect<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">null<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">SpellType<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">type<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">null<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">string<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">incantation<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #f57d00;\">&#8220;<\/span><span style=\"color: #f57d00;\">&#8220;<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">castTime<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #f57d00;\">0.0f<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">manaCost<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #f57d00;\">0.0f<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">effectValue<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #f57d00;\">0.0f<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">EffectType<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">effectType<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">null<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #3364a4;\">EffectTarget<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">effectTarget<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">null<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">delayTime<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #f57d00;\">0.0f<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">\u00a0\u00a0\u00a0\u00a0<\/span><span style=\"color: #009695;\">public<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #009695;\">float<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">expireTime<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #333333;\">=<\/span><span style=\"color: #333333;\">\u00a0<\/span><span style=\"color: #f57d00;\">0.0f<\/span><span style=\"color: #333333;\">;<\/span><br \/>\n<span style=\"color: #333333;\">}<\/span><\/span><\/p>\n<p><a href=\"http:\/\/mageduels.com\/wp-content\/uploads\/2016\/02\/SpellList.png\" rel=\"attachment wp-att-219\"><img loading=\"lazy\" class=\"alignnone size-medium wp-image-219 aligncenter\" src=\"http:\/\/mageduels.com\/wp-content\/uploads\/2016\/02\/SpellList-161x300.png\" alt=\"SpellList\" width=\"161\" height=\"300\" srcset=\"http:\/\/mageduels.com\/wp-content\/uploads\/2016\/02\/SpellList-161x300.png 161w, http:\/\/mageduels.com\/wp-content\/uploads\/2016\/02\/SpellList.png 273w\" sizes=\"(max-width: 161px) 100vw, 161px\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>So because a lot of the parts of Unity are new to me, I may not have built things in the greatest way&#8230; at least not on the first pass. Originally I wrote the spell system with a game object that implements a script that just holds information about the spell. public\u00a0class\u00a0Spell:\u00a0MonoBehaviour\u00a0{ \u00a0\u00a0\u00a0\u00a0public\u00a0KeyCode\u00a0key; \u00a0 \u00a0\u00a0public\u00a0GameObject\u00a0effect; &hellip; <a href=\"http:\/\/mageduels.com\/?p=216\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">ScriptableObjects<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"http:\/\/mageduels.com\/index.php?rest_route=\/wp\/v2\/posts\/216"}],"collection":[{"href":"http:\/\/mageduels.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mageduels.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mageduels.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mageduels.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=216"}],"version-history":[{"count":2,"href":"http:\/\/mageduels.com\/index.php?rest_route=\/wp\/v2\/posts\/216\/revisions"}],"predecessor-version":[{"id":221,"href":"http:\/\/mageduels.com\/index.php?rest_route=\/wp\/v2\/posts\/216\/revisions\/221"}],"wp:attachment":[{"href":"http:\/\/mageduels.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=216"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mageduels.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=216"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mageduels.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=216"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}