{"id":1532,"date":"2019-11-20T14:56:23","date_gmt":"2019-11-20T14:56:23","guid":{"rendered":"https:\/\/docs.sisus.co\/power-inspector\/?p=1532"},"modified":"2021-03-24T17:50:56","modified_gmt":"2021-03-24T17:50:56","slug":"requirecomponents","status":"publish","type":"post","link":"https:\/\/docs.sisus.co\/power-inspector\/attributes\/requirecomponents\/","title":{"rendered":"RequireComponents"},"content":{"rendered":"<p>When added before a component class will make sure that whenever the component with the attribute is added to GameObjects, all components matching the specified types are also present on the same GameObject.<\/p>\n<h2>Attribute Target<\/h2>\n<p>Component class<\/p>\n<h2>Example<\/h2>\n<pre>using System;\r\nusing UnityEngine;\r\nusing Sisus.Attributes;\r\n\r\n[RequireComponents(typeof(Camera), typeof(AudioListener)), DisallowMultipleComponent]\r\npublic class MainCamera : MonoBehaviour\r\n{\r\n\tpublic static MainCamera Instance\r\n\t{\r\n\t\tget;\r\n\t\tprivate set;\r\n\t}\r\n\t\r\n\tvoid Awake()\r\n\t{\r\n\t\tif(Instance != null &amp;&amp; Instance != this)\r\n\t\t{\r\n\t\t\tDebug.LogWarning(\"MainCamera created with another MainCamera already existing in the scene. Demoting previous MainMamera into a normal camera.\", this);\r\n\t\t\t\r\n\t\t\tif(Instance.CompareTag(\"MainCamera\"))\r\n\t\t\t{\r\n\t\t\t\tInstance.tag = \"Untagged\";\r\n\t\t\t}\r\n\r\n\t\t\tif(string.Equals(Instance.name, \"Main Camera\", StringComparison.Ordinal))\r\n\t\t\t{\r\n\t\t\t\tInstance.name = \"Camera\";\r\n\t\t\t}\r\n\r\n\t\t\tDestroy(Instance.GetComponent&lt;AudioSource&gt;());\r\n\t\t\tDestroy(Instance);\r\n\t\t}\r\n\r\n\t\tInstance = this;\r\n\t\ttag = \"MainCamera\";\r\n\t\tif(string.Equals(name, \"Camera\", StringComparison.Ordinal))\r\n\t\t{\r\n\t\t\tInstance.name = \"Main Camera\";\r\n\t\t}\r\n\t}\r\n}<\/pre>\n<pre><\/pre>\n<h2>Example Result (Add Component)<\/h2>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-1538\" src=\"https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/2019\/11\/unity-requirecomponents.png\" alt=\"\" width=\"588\" height=\"219\" srcset=\"https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/sites\/2\/2019\/11\/unity-requirecomponents.png 588w, https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/sites\/2\/2019\/11\/unity-requirecomponents-300x112.png 300w\" sizes=\"(max-width: 588px) 100vw, 588px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>Example Result (Remove Component)<\/h2>\n<p><img loading=\"lazy\" class=\"alignnone size-full wp-image-1537\" src=\"https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/2019\/11\/RequireComponents-attribute-unity.png\" alt=\"\" width=\"389\" height=\"156\" srcset=\"https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/sites\/2\/2019\/11\/RequireComponents-attribute-unity.png 389w, https:\/\/docs.sisus.co\/power-inspector\/wp-content\/uploads\/sites\/2\/2019\/11\/RequireComponents-attribute-unity-300x120.png 300w\" sizes=\"(max-width: 389px) 100vw, 389px\" \/><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When added before a component class will make sure that whenever the component with the attribute is added to GameObjects, all components matching the specified types are also present on the same GameObject. Attribute Target Component class Example using System; using UnityEngine; using Sisus.Attributes; [RequireComponents(typeof(Camera), typeof(AudioListener)), DisallowMultipleComponent] public class MainCamera : MonoBehaviour { public static ..<\/p>\n<div class=\"clear-fix\"><\/div>\n<p><a href=\"https:\/\/docs.sisus.co\/power-inspector\/attributes\/requirecomponents\/\" title=\"read more\">Read more<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[26],"tags":[],"_links":{"self":[{"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/posts\/1532"}],"collection":[{"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/comments?post=1532"}],"version-history":[{"count":2,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/posts\/1532\/revisions"}],"predecessor-version":[{"id":1839,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/posts\/1532\/revisions\/1839"}],"wp:attachment":[{"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/media?parent=1532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/categories?post=1532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docs.sisus.co\/power-inspector\/wp-json\/wp\/v2\/tags?post=1532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}