Hola . alguien me podría decir como hago para que funcione esta script sin que este sujeta a ningun gameObject ? la idea es que esa script se descargara de internet directamente a una carpeta del proyecto y despues que corra el codigo, o que despues de ser descargada se pueda llamar desde otra script
esta en clase ScriptableObject porque es lo unico que creo que funcionaria pero parece que solo es para guardar datos o puede que este haciendo mal todo
ayuda plz
---------------------------------------------------------------------------
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InstaladorUpdate : ScriptableObject {
public bool PermisoInstalarUpdate = false;
void Start ()
{}
void Update () {
if (PermisoInstalarUpdate = true)
Debug.Log ("¡ Por fin !");
}
}
no entendí muy bien lo que pedís, me suena a que no está el concepto claro de lo que hace un script (de los monobehaviours, un guión, un papel en la obra si querés) vs un scriptableObject : un script NO relacionado a ningun gameObject, es decir, a ningun objeto que el motor entiende que vive en Runtime, es decir, que en teoría esto no tiene funcionalidad (aunque podés hacer que un SCO haga trabajo y no el monobehaviour), es más como un lugar donde poner cosas, hay muchas cosas de Unity que son scriptableObjects, generalmente usados como baseDe Datos, opciones, Editor, etc.
Cita de: Ivan dario date=1524360754alguien me podría decir como hago para que funcione esta script sin que este sujeta a ningun gameObject ?
Poniendola en un SCO, aunque el que "funcione" queda en el aire, no se que es lo que estás tratando de hacer.
Cita de: Ivan dario date=1524360754la idea es que esa script se descargara de internet directamente a una carpeta del proyecto y despues que corra el codigo, o que despues de ser descargada se pueda llamar desde otra script
¿qué significa el "despues de ser descargada se pueda llamar desde otra script" , descargada de donde?, vos podés llamar a un miembro o método de una clase de lo que sea (cualquier clase de cualquier tipo) siempre y cuando tengas su referencia.
Un SCO tiene sus mensajes OnDestroy, OnEnable, OnDisable, Awake.... así como un monobehaviour tienen los suyos Start Update LateUpdate etc... fijate los "Messages"
https://docs.unity3d.com/ScriptReference/ScriptableObject.html (https://docs.unity3d.com/ScriptReference/ScriptableObject.html)
la razón por la que "no funciona" es que Start y Update no existe en un SCO, solo en un monobehaviour. Bueno, no tan así, por ej en EditorWindow tenés un Update en los mensajes, fijate:
https://docs.unity3d.com/ScriptReference/EditorWindow.html (https://docs.unity3d.com/ScriptReference/EditorWindow.html)
y es un scriptableObject, pero no es el mismo Update que el monobehaviour, este ocurre a otro ritmo.
Simplemente puedes ponerlo en la primera escena de tu juego, en un gameObject vacío (osea solo con el transform y con tu script) ya que el void update te mandara el mensaje que has echo en tu script en cada frame del juego.
Lo que quieres hacer es algo parecido a un sistema de actualización del juego?
Cita de: Alex date=1524364788Simplemente puedes ponerlo en la primera escena de tu juego, en un gameObject vacío (osea solo con el transform y con tu script) ya que el void update te mandara el mensaje que has echo en tu script en cada frame del juego.
Lo que quieres hacer es algo parecido a un sistema de actualización del juego?
Es exactamente lo que busco hacer :D, gracias lo intentare ojala funcione
Cita de: lightbug date=1524363452no entendí muy bien lo que pedís, me suena a que no está el concepto claro de lo que hace un script (de los monobehaviours, un guión, un papel en la obra si querés) vs un scriptableObject : un script NO relacionado a ningun gameObject, es decir, a ningun objeto que el motor entiende que vive en Runtime, es decir, que en teoría esto no tiene funcionalidad (aunque podés hacer que un SCO haga trabajo y no el monobehaviour), es más como un lugar donde poner cosas, hay muchas cosas de Unity que son scriptableObjects, generalmente usados como baseDe Datos, opciones, Editor, etc.
La idea es que el script cuando se descargue de un servidor, y cuando este completa en una carpeta del proyecto. se pueda ejecutar automaticamente y hacer lo que yo quiero que haga en este ejemplo es el debug.log
Cita de: Ivan dario date=1524365056Es exactamente lo que busco hacer :D, gracias lo intentare ojala funcione
Denada! recueda: por lo que sé, es que si un script que no esta añadido a un gameobject en la escena no funcionara ya que al momento de compilar tu juego para exportarlo unity busca todos los objetos que se usará y se requiere para el buen funcionamiento de tu juego, y si ese script no esta siendo utilizado unity simplemente lo ignora y no lo une a los demás componentes que exportará. Si quieres conectar un scrip con otro puedes usar la función de GetComponent, en la documentación de unity te lo explica bien o en algunos videos de youtube
Saludos!
Cita de: Alex date=1524365812Denada! recueda: por lo que sé, es que si un script que no esta añadido a un gameobject en la escena no funcionara ya que al momento de compilar tu juego para exportarlo unity busca todos los objetos que se usará y se requiere para el buen funcionamiento de tu juego, y si ese script no esta siendo utilizado unity simplemente lo ignora y no lo une a los demás componentes que exportará. Si quieres conectar un scrip con otro puedes usar la función de GetComponent, en la documentación de unity te lo explica bien o en algunos videos de youtube
Saludos!
Una ultima cosa . como hago para que desde una script pueda activar un gameobjet . es decir añadirlo a la escena
gracias de antemano :D
(//<fileStore.core_Attachment>/monthly_2018_04/1.png.723ae58ed241b5f617f5d4e33e5aa272.png)
Cita de: Ivan dario date=1524425964Una ultima cosa . como hago para que desde una script pueda activar un gameobjet . es decir añadirlo a la escena
Para instanciarlo (ponerlo en escena) debés tener el asset (el prefab) en una carpeta llamada exactamente "Resources" o subcarpetas de estas "Resoruces/sub1/sub2" y desde el script:
GameObject elObjInstanciado = Instantiate( Resources.Load<GameObject>("sub1/sub2/elnombre") ); //"Resources" no se usa
fijate si lo puse bien, me parece que no tenés que hacer ningun cast pero por las dudas fijate.
Gracias :D me funciono
pero para que el
GameObject elObjInstanciado =
si me funciono solo el
Instantiate( Resources.Load<GameObject>("sub1/sub2/elnombre") );
[/quote]
es necesario ? o me estoy perdiendo de algo ?
Cita de: Ivan dario date=1524445165Gracias :D me funciono
pero para que el
GameObject elObjInstanciado =
si me funciono solo el
Instantiate( Resources.Load<GameObject>("sub1/sub2/elnombre") );
es necesario ? o me estoy perdiendo de algo ?
Osea no compiló con el "GameObject = " ? Instantiate no recuerdo si retorno un UnityEngine.Object ? podés hacer un cast o agregregar "as GameObject" al final:
GameObject obj = (GameObject)Instantiate....
//o
GameObject obj = Instantiate.... as GameObject
el gameObject devuelto es solo la referencia al objeto por si querés hacer lo que quieras con él, si no la necesitas no es necesario agregarlo.
saludos
Cita de: lightbug date=1524454182el gameObject devuelto es solo la referencia al objeto por si querés hacer lo que quieras con él, si no la necesitas no es necesario agregarlo.
saludos
Gracias por todo hombre :D me ayudaste bastante
Saludos