unity tag script c# unity3d toggle unity5

c# - tag - Unity Crea control de UI desde el script



unity ui script (1)

Se supone que debes hacer el Toggle al niño del Canvas . No hiciste eso en tu código. Además, mueve un componente de UI y GameObject con newGO.GetComponent<RectTransform>().anchoredPosition3D newGO.transform.position no newGO.transform.position .

Hay 3 formas de crear un control completo de UI en Unity:

1.Utilice la API DefaultControls para generarla (Fácil y Recomendada)

Con la clase DefaultControls , Unity creará la interfaz de usuario suministrada y luego devolverá el elemento primario de la interfaz de usuario. Esta es la forma más fácil y recomendada de hacer esto. Toma DefaultControls.Resources como parámetro para que pueda proporcionar los sprites que se utilizarán al crear el Control de UI predeterminado.

Botón:

public GameObject canvas; void Start() { DefaultControls.Resources uiResources = new DefaultControls.Resources(); //Set the Button Background Image someBgSprite; uiResources.standard = someBgSprite; GameObject uiButton = DefaultControls.CreateButton(uiResources); uiButton.transform.SetParent(canvas.transform, false); }

Palanca:

public GameObject canvas; void Start() { DefaultControls.Resources uiResources = new DefaultControls.Resources(); //Set the Toggle Background Image someBgSprite; uiResources.background = someBgSprite; //Set the Toggle Checkmark Image someCheckmarkSprite; uiResources.checkmark = someCheckmarkSprite; GameObject uiToggle = DefaultControls.CreateToggle(uiResources); uiToggle.transform.SetParent(canvas.transform, false); }

Control deslizante:

public GameObject canvas; void Start() { DefaultControls.Resources uiResources = new DefaultControls.Resources(); //Set the Slider Background Image someBgSprite; uiResources.background = someBgSprite; //Set the Slider Fill Image someFillSprite; uiResources.standard = someFillSprite; //Set the Slider Knob Image someKnobSprite; uiResources.knob = someKnobSprite; GameObject uiSlider = DefaultControls.CreateSlider(uiResources); uiSlider.transform.SetParent(canvas.transform, false); }

Panel:

public GameObject canvas; void Start() { DefaultControls.Resources uiResources = new DefaultControls.Resources(); //Set the Panel Background Image someBgSprite; uiResources.background = someBgSprite; GameObject uiPanel = DefaultControls.CreatePanel(uiResources); uiPanel.transform.SetParent(canvas.transform, false); }

Campo de entrada:

public GameObject canvas; void Start() { DefaultControls.Resources uiResources = new DefaultControls.Resources(); //Set the InputField Background Image someBgSprite; uiResources.inputField = someBgSprite; GameObject uiInputField = DefaultControls.CreateInputField(uiResources); uiInputField.transform.SetParent(canvas.transform, false); uiInputField.transform.GetChild(0).GetComponent<Text>().font = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf"); }

Desplegable:

public GameObject canvas; void Start() { DefaultControls.Resources uiResources = new DefaultControls.Resources(); //Set the Dropdown Background and Handle Image someBgSprite; uiResources.standard = someBgSprite; //Set the Dropdown Scrollbar Background Image someScrollbarSprite; uiResources.background = someScrollbarSprite; //Set the Dropdown Image someDropDownSprite; uiResources.dropdown = someDropDownSprite; //Set the Dropdown Image someCheckmarkSprite; uiResources.checkmark = someCheckmarkSprite; //Set the Dropdown Viewport Mask Image someMaskSprite; uiResources.mask = someMaskSprite; GameObject uiDropdown = DefaultControls.CreateDropdown(uiResources); uiDropdown.transform.SetParent(canvas.transform, false); }

El resto de los controles de UI:

public static GameObject CreateImage(Resources resources); public static GameObject CreateRawImage(Resources resources); public static GameObject CreateScrollbar(Resources resources); public static GameObject CreateScrollView(Resources resources); public static GameObject CreateText(Resources resources);

3.Via prefabricada e instancia

Este método requiere que tenga la interfaz de usuario ya creada y guardada como prefabricada. A continuación, puede crear una Instantiate la interfaz de usuario cuando lo necesite.

Cree un control de Toggle desde el editor y guárdelo como un prefabricado. Eliminar el original. A continuación, puede Instantiate una Instantiate del prefabricado de control de alternancia durante el tiempo de ejecución y posicionarlo o escalarlo si es necesario.

public GameObject canvas; public GameObject togglePrefab; void Start() { GameObject uiToggle = Instantiate(togglePrefab) as GameObject; uiToggle.transform.SetParent(canvas.transform, false); //Move to another position? uiToggle.GetComponent<RectTransform>().anchoredPosition3D = new Vector3(...,...,...); //Re-scale? uiToggle.GetComponent<RectTransform>().localScale = new Vector3(...,...,...); }

2. Pieza por Pieza (Duro)

Para ello, primero cree una IU desde el Editor, luego estudie la Jerarquía y los componentes adjuntos a ella en el Editor y reprodúzcala mediante el código.

GameObject -> UI -> Toggle

Por ejemplo, así es como se ve Toggle:

1. Crea un juego de acción Toggle y luego hazlo hijo del lienzo .

2. Crea un GameObject de fondo y conviértelo en hijo de Toggle GameObject.

3. Crea un GameObject de marca de verificación y hazlo secundario del GameObject de fondo .

4. Crea una etiqueta GameObject y conviértela en hija de Toggle GameObject.

5. Ahora adjunte componentes como Image , Text y Toggle a cada GameObject como aparece en el Editor.

En codigo:

public GameObject canvas; void Start() { makeToggle(); } void makeToggle() { GameObject toggleObj = createToggleObj(canvas); GameObject bgObj = createBackgroundObj(toggleObj); GameObject checkMarkObj = createCheckmarkObj(bgObj); GameObject labelObj = createLabelObj(toggleObj); attachAllComponents(toggleObj, bgObj, checkMarkObj, labelObj); } //1.Create a *Toggle* GameObject then make it child of the *Canvas*. GameObject createToggleObj(GameObject cnvs) { GameObject toggle = new GameObject("Toggle"); toggle.transform.SetParent(cnvs.transform); toggle.layer = LayerMask.NameToLayer("UI"); return toggle; } //2.Create a Background GameObject then make it child of the Toggle GameObject. GameObject createBackgroundObj(GameObject toggle) { GameObject bg = new GameObject("Background"); bg.transform.SetParent(toggle.transform); bg.layer = LayerMask.NameToLayer("UI"); return bg; } //3.Create a Checkmark GameObject then make it child of the Background GameObject. GameObject createCheckmarkObj(GameObject bg) { GameObject chmk = new GameObject("Checkmark"); chmk.transform.SetParent(bg.transform); chmk.layer = LayerMask.NameToLayer("UI"); return chmk; } //4.Create a Label GameObject then make it child of the Toggle GameObject. GameObject createLabelObj(GameObject toggle) { GameObject lbl = new GameObject("Label"); lbl.transform.SetParent(toggle.transform); lbl.layer = LayerMask.NameToLayer("UI"); return lbl; } //5.Now attach components like Image, Text and Toggle to each GameObject like it appears in the Editor. void attachAllComponents(GameObject toggle, GameObject bg, GameObject chmk, GameObject lbl) { //Attach Text to label Text txt = lbl.AddComponent<Text>(); txt.text = "Toggle"; Font arialFont = (Font)Resources.GetBuiltinResource(typeof(Font), "Arial.ttf"); txt.font = arialFont; txt.lineSpacing = 1; txt.color = new Color(50 / 255, 50 / 255, 50 / 255, 255 / 255); RectTransform txtRect = txt.GetComponent<RectTransform>(); txtRect.anchorMin = new Vector2(0, 0); txtRect.anchorMax = new Vector2(1, 1); //txtRect.y //Attach Image Component to the Checkmark Image chmkImage = chmk.AddComponent<Image>(); chmkImage.sprite = (Sprite)AssetDatabase.GetBuiltinExtraResource(typeof(Sprite), "UI/Skin/Checkmark.psd"); chmkImage.type = Image.Type.Simple; //Attach Image Component to the Background Image bgImage = bg.AddComponent<Image>(); bgImage.sprite = (Sprite)AssetDatabase.GetBuiltinExtraResource(typeof(Sprite), "UI/Skin/UISprite.psd"); bgImage.type = Image.Type.Sliced; RectTransform bgRect = txt.GetComponent<RectTransform>(); bgRect.anchorMin = new Vector2(0, 1); bgRect.anchorMax = new Vector2(0, 1); //Attach Toggle Component to the Toggle Toggle toggleComponent = toggle.AddComponent<Toggle>(); toggleComponent.transition = Selectable.Transition.ColorTint; toggleComponent.targetGraphic = bgImage; toggleComponent.isOn = true; toggleComponent.toggleTransition = Toggle.ToggleTransition.Fade; toggleComponent.graphic = chmkImage; toggle.GetComponent<RectTransform>().anchoredPosition3D = new Vector3(0, 0, 0); }

El método n. ° 3 es la forma más difícil de hacerlo, así que debe evitarlo. Método n. ° 1 Debería estar bien en este caso.

Creé un alternar por código pero no se mostrará. Además, no puedo cambiar la posición de mi campo de texto. Lo intenté mucho y nada funciona. Esta es mi versión actual, quizás veas el error.

Soy nuevo en Unity y es muy difícil.

public class Game : MonoBehaviour { public GameObject canvas; void Start () { GameObject newGO = new GameObject("myTextGO"); newGO.transform.SetParent(this.transform); newGO.transform.position = new Vector3(0, 0, 0); Text myText = newGO.AddComponent<Text>(); myText.text = "Ta-dah!"; Font ArialFont = (Font)Resources.GetBuiltinResource(typeof(Font),"Arial.ttf"); myText.font = ArialFont; myText.material = ArialFont.material; myText.color = Color.black; myText.transform.position = new Vector3(0, 10, 0); GameObject secGO = new GameObject("myGO"); secGO.transform.SetParent(this.transform); Toggle myToggle = secGO.AddComponent<Toggle>(); myToggle.isOn = true; myToggle.transform.position = new Vector3(10, 10, 0); } }