{"id":13300,"date":"2022-04-25T20:31:40","date_gmt":"2022-04-25T18:31:40","guid":{"rendered":"https:\/\/www.espai.es\/blog\/?p=13300"},"modified":"2022-04-25T20:51:40","modified_gmt":"2022-04-25T18:51:40","slug":"interfaces-en-unity","status":"publish","type":"post","link":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/","title":{"rendered":"Interfaces en Unity"},"content":{"rendered":"<h1>Interfaces en Unity<\/h1>\n<p>&nbsp;<\/p>\n<p>Las <a href=\"https:\/\/docs.microsoft.com\/es-es\/dotnet\/csharp\/language-reference\/keywords\/interface\">interfaces<\/a> te permiten a\u00f1adir funcionalidades en cualquier clase que se implemente. De esta manera, puede asegurarse de que todas las clases no relacionadas se comporten de manera similar.<\/p>\n<p>En este art\u00edculo aprender\u00e1s a crear interfaces en Unity, regulares, gen\u00e9ricas, e implementar-las en una clase.<\/p>\n<p>Una interface en Unity, define un contrato. Cualquier <span class=\"hiddenSpellError\">class<\/span>\u00a0o\u00a0<span class=\"hiddenSpellError\">struct<\/span>\u00a0que implemente ese contrato debe proporcionar una implementaci\u00f3n de los miembros definidos en la interfaz.<\/p>\n<p>Puede ser, que al leer esto, os recuerde a una clase abstracta, ya que las usamos para las mismas cosas, aun as\u00ed hay algunas diferencias importantes.<\/p>\n<h2>Diferencias entre clases abstractas e interfaces<\/h2>\n<ul>\n<li>C# no permite la multiherencia, por lo que una clase solo puede heredar de otra clase, mientras que puede implementar todas las interfaces que quiera.<\/li>\n<li>Las clases abstractas pueden contener c\u00f3digo, mientras que las interfaces no. Aunque los m\u00e9todos extensionales te permiten \u00abhacer trampas\u00bb en este tema.<\/li>\n<li>Es posible versionar una clase abstracta sin romper a otras clases que las implementen, pero no es posible hacer lo mismo con una interfaz. A\u00f1adir un m\u00e9todo m\u00e1s, dejar\u00e1 de compilar, ya que es obligatorio implementar el m\u00e9todo a todas las clases.<\/li>\n<li>En las clases abstractas podemos indicar el modificador de acceso, mientras que en las interfaces no.<\/li>\n<\/ul>\n<p>Imaginemos que nuestro jugador puede interactuar con ciertos objetos. Los objetos con los que queremos interaccionar tienen sus propios scripts con sus m\u00e9todos de interactuar.<\/p>\n<p><a href=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/clase1.png\" rel=\"attachment wp-att-13307\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-13307 size-full\" src=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/clase1.png\" alt=\"Ejemplo de la primera clase\" width=\"533\" height=\"478\" srcset=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/clase1.png 533w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/clase1-300x269.png 300w\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><\/a><a href=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/clase2.png\" rel=\"attachment wp-att-13308\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-13308 size-full\" src=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/clase2.png\" alt=\"Ejemplo de la segunda clase\" width=\"543\" height=\"356\" srcset=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/clase2.png 543w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/clase2-300x197.png 300w\" sizes=\"auto, (max-width: 543px) 100vw, 543px\" \/><\/a><\/p>\n<p>Para acceder a los m\u00e9todos podr\u00edamos utilizar el\u00a0<span class=\"hiddenSpellError\">GetComponent<\/span>\u00a0para buscar la funci\u00f3n interactuar en el script del objeto.<\/p>\n<p><a href=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction.png\" rel=\"attachment wp-att-13310\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-13310 size-full\" src=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction.png\" alt=\"Funci\u00f3n del c\u00f3digo mal hecha\" width=\"841\" height=\"414\" srcset=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction.png 841w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction-300x148.png 300w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction-768x378.png 768w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction-700x345.png 700w\" sizes=\"auto, (max-width: 841px) 100vw, 841px\" \/><\/a><\/p>\n<p>La funci\u00f3n\u00a0<span class=\"hiddenSpellError\">GetNearestGameObject<\/span>() devuelve el objeto m\u00e1s cercano al jugador.<\/p>\n<p>Hay un problema para extender nuestro c\u00f3digo con este sistema. En este caso no hay problema, ya que son solo dos objetos, pero si tuvi\u00e9semos much\u00edsimos m\u00e1s, donde interactu\u00e1semos con m\u00e1s de 30 objetos, nuestro c\u00f3digo se extender\u00eda much\u00edsimo y no ser\u00eda nada \u00f3ptimo.<\/p>\n<p>Aqu\u00ed es donde emplearemos las interfaces.<\/p>\n<h2>Crear e implementar interfaces en Unity.<\/h2>\n<p>Para\u00a0generar una\u00a0<span class=\"hiddenGrammarError\">interface<\/span>, generaremos un nuevo <em>script.<span class=\"hiddenSpellError\">cs<\/span><\/em>, por defecto, se nos a\u00f1aden las librer\u00edas de Unity, y la estructura de clase.<\/p>\n<p>Eliminaremos la clase, y crearemos la\u00a0<span class=\"hiddenGrammarError\">interface<\/span>\u00a0con la siguiente sintaxis:<\/p>\n<p><a href=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/interface.png\" rel=\"attachment wp-att-13309\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-13309 size-full\" src=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/interface.png\" alt=\"Interface en Unity\" width=\"366\" height=\"131\" srcset=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/interface.png 366w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/interface-300x107.png 300w\" sizes=\"auto, (max-width: 366px) 100vw, 366px\" \/><\/a><\/p>\n<p>La nomenclatura est\u00e1ndar para las interfaces es a\u00f1adiendo una I delante del nombre de la\u00a0<span class=\"hiddenGrammarError\">interface<\/span>.<\/p>\n<p>Esta\u00a0<span class=\"hiddenGrammarError\">interface<\/span> tiene \u00fanicamente el m\u00e9todo \u201cUse\u201d, que habr\u00e1 que implementar en cada clase que se aplique.<\/p>\n<p><a href=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/aplicarInterface.png\" rel=\"attachment wp-att-13306\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-13306 size-full\" src=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/aplicarInterface.png\" alt=\"C\u00f3digo a\u00f1adiendo las interfaces en unity\" width=\"668\" height=\"625\" srcset=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/aplicarInterface.png 668w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/aplicarInterface-300x281.png 300w\" sizes=\"auto, (max-width: 668px) 100vw, 668px\" \/><\/a><\/p>\n<p>Ahora ya no tenemos que preocuparnos de a\u00f1adir cada una de las clases con cada uno de los m\u00e9todos, ya que todas las clases con la interfaz van a incluir el m\u00e9todo Use. El resultado ser\u00e1 un c\u00f3digo m\u00e1s limpio y estructurado:<\/p>\n<p><a href=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction3.png\" rel=\"attachment wp-att-13418\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-13418\" src=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction3.png\" alt=\"\" width=\"1042\" height=\"337\" srcset=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction3.png 1042w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction3-300x97.png 300w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction3-1024x331.png 1024w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction3-768x248.png 768w, https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/playerfunction3-700x226.png 700w\" sizes=\"auto, (max-width: 1042px) 100vw, 1042px\" \/><\/a><\/p>\n<p>Igual que lo podemos utilizar con objetos\u00a0<span class=\"hiddenSpellError\">interactuables<\/span>, se puede usar en muchas otros escenarios:<\/p>\n<ul>\n<li><a href=\"https:\/\/learn.unity.com\/tutorial\/las-interfaces#5e419555edbc2a0a62170fc6\"><span class=\"hiddenSpellError\">IDamageble<\/span>\u00a0<\/a>(Clases que pueden recibir da\u00f1o),<\/li>\n<li>ICatchable (Coger objetos)<\/li>\n<li>IConsumable (M\u00e9todo para pociones\/comida)<\/li>\n<li>ISellable (Objetos que se pueden vender)<\/li>\n<\/ul>\n<p>En conclusi\u00f3n, las interfaces en Unity son muy importantes para nuestro desarrollo, os animo a que las prob\u00e9is para mejorar el c\u00f3digo.<\/p>\n<h2>C\u00f3digo del ejemplo:<\/h2>\n<p><strong><em>PlayerInteraction.cs<\/em><\/strong><\/p>\n<pre>if (Input.GetButtonDown(\"Fire1\"))\r\n{\r\n    var nearestGameObject = GetNearestGameObject();\r\n    if (nearestGameObject != null){\r\n        var itemInteractuable = nearestGameObject.GetComponent&lt;IInteractable&gt;();\r\n        if (itemInteractuable != null)\r\n        {\r\n            itemInteractuable.Use();\r\n        }\r\n    }\r\n}\r\n\r\nprivate GameObject GetNearestGameObject()\r\n{\r\n    GameObject result = null;\r\n    var ray = _camera.ScreenPointToRay(Input.mousePosition);\r\n    if (Physics.Raycast(ray, out var hit, 3))\r\n    {\r\n        result = hit.transform.gameObject;\r\n    }\r\n    return result;\r\n}\r\n\r\n<\/pre>\n<p><em><strong>ObjetoInteractuable.cs<\/strong><\/em><\/p>\n<pre>public class luzCambiar : MonoBehaviour, IInteractable\r\n{\r\n    [SerializeField] private List&lt;Light&gt; luces;\r\n    private bool _isEnabled = true;\r\n    public void cambiar()\r\n    {\r\n        _isEnabled = !_isEnabled;\r\n        foreach (var aLight in luces)\r\n        {\r\n            aLight.enabled = _isEnabled;\r\n        }\r\n    }\r\n    public void Use()\r\n    {\r\n        cambiar();\r\n    }\r\n}<\/pre>\n<pre><code><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Las interfaces te permiten a\u00f1adir una funcionalidad en cualquier clase que se implemente. De esta manera, puede asegurarse de que todas las clases no relacionadas se comporten de manera similar. En este art\u00edculo aprender\u00e1s a crear interfaces regulares y gen\u00e9ricas, e implementar-las en una clase. Una interface en Unity, define un contrato. Cualquier class\u00a0o\u00a0struct\u00a0que implemente ese contrato debe proporcionar una implementaci\u00f3n de los miembros definidos en la interfaz.<\/p>\n","protected":false},"author":37,"featured_media":13419,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_ef_editorial_meta_date_first-draft-date":"","_ef_editorial_meta_paragraph_assignment":"","_ef_editorial_meta_checkbox_needs-photo":"","_ef_editorial_meta_number_word-count":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[218,5],"tags":[71,814,815,89,389,322],"class_list":["post-13300","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-escola-espai","category-programacion","tag-3d","tag-interface","tag-poo","tag-programacion-2","tag-programacion-de-videojuegos","tag-unity"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Interfaces en Unity - Blog Escola Espai<\/title>\n<meta name=\"description\" content=\"En este art\u00edculo aprender\u00e1s a crear interfaces en Unity, regulares y gen\u00e9ricas, e implementarlas en distintas clases\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Interfaces en Unity - Blog Escola Espai\" \/>\n<meta property=\"og:description\" content=\"En este art\u00edculo aprender\u00e1s a crear interfaces en Unity, regulares y gen\u00e9ricas, e implementarlas en distintas clases\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Escola Espai\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-25T18:31:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-25T18:51:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"David Roca\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"David Roca\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/\"},\"author\":{\"name\":\"David Roca\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/868ce068b4c6412eb54c2d7943697a2a\"},\"headline\":\"Interfaces en Unity\",\"datePublished\":\"2022-04-25T18:31:40+00:00\",\"dateModified\":\"2022-04-25T18:51:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/\"},\"wordCount\":540,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png\",\"keywords\":[\"3d\",\"interface\",\"poo\",\"programaci\u00f3n\",\"Programaci\u00f3n de videojuegos\",\"unity\"],\"articleSection\":[\"Escola Espai\",\"Programaci\u00f3n\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/\",\"url\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/\",\"name\":\"Interfaces en Unity - Blog Escola Espai\",\"isPartOf\":{\"@id\":\"https:\/\/www.espai.es\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png\",\"datePublished\":\"2022-04-25T18:31:40+00:00\",\"dateModified\":\"2022-04-25T18:51:40+00:00\",\"author\":{\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/868ce068b4c6412eb54c2d7943697a2a\"},\"description\":\"En este art\u00edculo aprender\u00e1s a crear interfaces en Unity, regulares y gen\u00e9ricas, e implementarlas en distintas clases\",\"breadcrumb\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#primaryimage\",\"url\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png\",\"contentUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png\",\"width\":1000,\"height\":500},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.espai.es\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Interfaces en Unity\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.espai.es\/blog\/#website\",\"url\":\"https:\/\/www.espai.es\/blog\/\",\"name\":\"Blog Escola Espai\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.espai.es\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/868ce068b4c6412eb54c2d7943697a2a\",\"name\":\"David Roca\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ffeeeb048688da23ed965545d7821176228acaac77f93c2234007020c27cfd4e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ffeeeb048688da23ed965545d7821176228acaac77f93c2234007020c27cfd4e?s=96&d=mm&r=g\",\"caption\":\"David Roca\"},\"description\":\"\u00a1Muy buenas a todos! Mi nombre es David, soy T\u00e9cnico en Animaci\u00f3n 3D, desarrollo de videojuegos y entornos interactivos. En mi carrera, me he especializado en la Realidad Aumentada, Realidad Virtual y la programaci\u00f3n en C#. Siempre me he decantado por la rama de programaci\u00f3n, y me he familiarizado por cuenta propia con distintos lenguajes de programaci\u00f3n. Mi hobby siempre ha sido analizar cada uno de los videojuegos que he tenido la ocasi\u00f3n de probar, y pensar en c\u00f3mo est\u00e1n hechos y programados. Desde que acab\u00e9 mis estudios he permanecido en el sector de la educaci\u00f3n, trabajando como profesor de programaci\u00f3n y como profesor de tiempo libre. Una de mis motivaciones, es la de poder transmitir esa energ\u00eda y esa ilusi\u00f3n por la programaci\u00f3n a los alumnos. Actualmente, estoy compaginando mi trabajo como profesor del \u00e1rea de programaci\u00f3n en la Escuela Espai, con un Grado Universitario de multimedia.\",\"url\":\"https:\/\/www.espai.es\/blog\/author\/davidroca\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Interfaces en Unity - Blog Escola Espai","description":"En este art\u00edculo aprender\u00e1s a crear interfaces en Unity, regulares y gen\u00e9ricas, e implementarlas en distintas clases","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/","og_locale":"es_ES","og_type":"article","og_title":"Interfaces en Unity - Blog Escola Espai","og_description":"En este art\u00edculo aprender\u00e1s a crear interfaces en Unity, regulares y gen\u00e9ricas, e implementarlas en distintas clases","og_url":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/","og_site_name":"Blog Escola Espai","article_published_time":"2022-04-25T18:31:40+00:00","article_modified_time":"2022-04-25T18:51:40+00:00","og_image":[{"width":1000,"height":500,"url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png","type":"image\/png"}],"author":"David Roca","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"David Roca","Tiempo de lectura":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#article","isPartOf":{"@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/"},"author":{"name":"David Roca","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/868ce068b4c6412eb54c2d7943697a2a"},"headline":"Interfaces en Unity","datePublished":"2022-04-25T18:31:40+00:00","dateModified":"2022-04-25T18:51:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/"},"wordCount":540,"commentCount":0,"image":{"@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#primaryimage"},"thumbnailUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png","keywords":["3d","interface","poo","programaci\u00f3n","Programaci\u00f3n de videojuegos","unity"],"articleSection":["Escola Espai","Programaci\u00f3n"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/","url":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/","name":"Interfaces en Unity - Blog Escola Espai","isPartOf":{"@id":"https:\/\/www.espai.es\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#primaryimage"},"image":{"@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#primaryimage"},"thumbnailUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png","datePublished":"2022-04-25T18:31:40+00:00","dateModified":"2022-04-25T18:51:40+00:00","author":{"@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/868ce068b4c6412eb54c2d7943697a2a"},"description":"En este art\u00edculo aprender\u00e1s a crear interfaces en Unity, regulares y gen\u00e9ricas, e implementarlas en distintas clases","breadcrumb":{"@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#primaryimage","url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png","contentUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png","width":1000,"height":500},{"@type":"BreadcrumbList","@id":"https:\/\/www.espai.es\/blog\/2022\/04\/interfaces-en-unity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.espai.es\/blog\/"},{"@type":"ListItem","position":2,"name":"Interfaces en Unity"}]},{"@type":"WebSite","@id":"https:\/\/www.espai.es\/blog\/#website","url":"https:\/\/www.espai.es\/blog\/","name":"Blog Escola Espai","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.espai.es\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/868ce068b4c6412eb54c2d7943697a2a","name":"David Roca","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ffeeeb048688da23ed965545d7821176228acaac77f93c2234007020c27cfd4e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ffeeeb048688da23ed965545d7821176228acaac77f93c2234007020c27cfd4e?s=96&d=mm&r=g","caption":"David Roca"},"description":"\u00a1Muy buenas a todos! Mi nombre es David, soy T\u00e9cnico en Animaci\u00f3n 3D, desarrollo de videojuegos y entornos interactivos. En mi carrera, me he especializado en la Realidad Aumentada, Realidad Virtual y la programaci\u00f3n en C#. Siempre me he decantado por la rama de programaci\u00f3n, y me he familiarizado por cuenta propia con distintos lenguajes de programaci\u00f3n. Mi hobby siempre ha sido analizar cada uno de los videojuegos que he tenido la ocasi\u00f3n de probar, y pensar en c\u00f3mo est\u00e1n hechos y programados. Desde que acab\u00e9 mis estudios he permanecido en el sector de la educaci\u00f3n, trabajando como profesor de programaci\u00f3n y como profesor de tiempo libre. Una de mis motivaciones, es la de poder transmitir esa energ\u00eda y esa ilusi\u00f3n por la programaci\u00f3n a los alumnos. Actualmente, estoy compaginando mi trabajo como profesor del \u00e1rea de programaci\u00f3n en la Escuela Espai, con un Grado Universitario de multimedia.","url":"https:\/\/www.espai.es\/blog\/author\/davidroca\/"}]}},"jetpack_featured_media_url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2022\/04\/SeminarioInterfaces-1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/13300","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/comments?post=13300"}],"version-history":[{"count":28,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/13300\/revisions"}],"predecessor-version":[{"id":13421,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/13300\/revisions\/13421"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/media\/13419"}],"wp:attachment":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/media?parent=13300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/categories?post=13300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/tags?post=13300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}