Alterar valor do script via botão
3 participantes
Página 1 de 1
Alterar valor do script via botão
Eu tenho esse script para mudar a câmera de posição, ela funciona normalmente quando eu aperto os números.
Mas, quando eu tento alterar por um botão UI, ele da errado.
O erro que apareceu no log foi esse:
IndexOutOfRangeException: Array index is out of range.
SmoothCameraTransition.change () (at Assets/Script/SmoothCameraTransition.cs:61)
SmoothCameraTransition.changeCurrentView () (at Assets/Script/SmoothCameraTransition.cs:56)
UnityEngine.Events.InvokableCall.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:165)
UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:58)
UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:36)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:45)
UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update()
Mas, quando eu tento alterar por um botão UI, ele da errado.
- Código:
void Update()
{
if (Input.GetKeyDown(KeyCode.Alpha1))
{
currentView = views[0];
}
if (Input.GetKeyDown(KeyCode.Alpha2))
{
currentView = views[1];
}
if (Input.GetKeyDown(KeyCode.Alpha3))
{
currentView = views[2];
}
if (Input.GetKeyDown(KeyCode.Alpha4))
{
currentView = views[3];
}
if (Input.GetKeyDown(KeyCode.Alpha5))
{
currentView = views[4];
}
if (Input.GetKeyDown(KeyCode.Alpha6))
{
currentView = views[5];
}
if (Input.GetKeyDown(KeyCode.Alpha7))
{
currentView = views[6];
}
}
//Essa void que eu adicionei ao botão
public void changeCurrentView()
{
currentView = views[25];
}
O erro que apareceu no log foi esse:
IndexOutOfRangeException: Array index is out of range.
SmoothCameraTransition.change () (at Assets/Script/SmoothCameraTransition.cs:61)
SmoothCameraTransition.changeCurrentView () (at Assets/Script/SmoothCameraTransition.cs:56)
UnityEngine.Events.InvokableCall.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:165)
UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:58)
UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:36)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:45)
UnityEngine.EventSystems.ExecuteEvents.Execute (IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[IPointerClickHandler] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction`1 functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update()
INKnight- Avançado
- PONTOS : 3599
REPUTAÇÃO : 18
Áreas de atuação : Iniciante em programação em C#;
Iniciante em design;
Respeito as regras :
Re: Alterar valor do script via botão
forneça mais informaçoes para que o forum possa lhe ajudar,o script q vc postou nao é o suficiente, poste algum video ou o script inteiro para talvez receber a soluçao,
Re: Alterar valor do script via botão
Como o amigo acima disse, poste o Script completo para nossa melhor análise
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: Alterar valor do script via botão
Script Completo:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SmoothCameraTransition : MonoBehaviour
{
public Transform[] views;
public float transitionSpeed;
public Transform currentView;
void Update()
{
if (Input.GetKeyDown(KeyCode.Alpha1))
{
currentView = views[0];
}
if (Input.GetKeyDown(KeyCode.Alpha2))
{
currentView = views[1];
}
if (Input.GetKeyDown(KeyCode.Alpha3))
{
currentView = views[2];
}
if (Input.GetKeyDown(KeyCode.Alpha4))
{
currentView = views[3];
}
if (Input.GetKeyDown(KeyCode.Alpha5))
{
currentView = views[4];
}
if (Input.GetKeyDown(KeyCode.Alpha6))
{
currentView = views[5];
}
if (Input.GetKeyDown(KeyCode.Alpha7))
{
currentView = views[6];
}
}
//Essa void que eu adicionei ao botão
public void changeCurrentView()
{
currentView = views[25];
}
void LateUpdate()
{
//Lerp position
transform.position = Vector3.Lerp(transform.position, currentView.position, Time.deltaTime * transitionSpeed);
Vector3 currentAngle = new Vector3(
Mathf.LerpAngle(transform.rotation.eulerAngles.x, currentView.transform.rotation.eulerAngles.x, Time.deltaTime * transitionSpeed),
Mathf.LerpAngle(transform.rotation.eulerAngles.y, currentView.transform.rotation.eulerAngles.y, Time.deltaTime * transitionSpeed),
Mathf.LerpAngle(transform.rotation.eulerAngles.z, currentView.transform.rotation.eulerAngles.z, Time.deltaTime * transitionSpeed));
transform.eulerAngles = currentAngle;
}
}
INKnight- Avançado
- PONTOS : 3599
REPUTAÇÃO : 18
Áreas de atuação : Iniciante em programação em C#;
Iniciante em design;
Respeito as regras :
Re: Alterar valor do script via botão
O elemento n° 25 da array de transforms está corretamente preenchido?
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Re: Alterar valor do script via botão
Nossa, é mesmo, acabei me esquecendo de preencher. Valeu cara!John Rambo escreveu:O elemento n° 25 da array de transforms está corretamente preenchido?
INKnight- Avançado
- PONTOS : 3599
REPUTAÇÃO : 18
Áreas de atuação : Iniciante em programação em C#;
Iniciante em design;
Respeito as regras :
Re: Alterar valor do script via botão
Ghosthy escreveu:Nossa, é mesmo, acabei me esquecendo de preencher. Valeu cara!John Rambo escreveu:O elemento n° 25 da array de transforms está corretamente preenchido?
Show! :D
JohnRambo- Moderador
- PONTOS : 5171
REPUTAÇÃO : 661
Idade : 24
Áreas de atuação : Unity;
Programação;
Música e Sonorização;
Graduado em Análise e Desenvolvimento de Sistemas;
Respeito as regras :
Tópicos semelhantes
» Nao consigo alterar o valor da variavel de outro script
» Como alterar via script o valor do Lightning Environment?
» MouseOver alterar de cores solidas para texturas alterar script
» tem como alterar a tag de um objeto por script?
» [Dúvida]Script alterar cor de material.
» Como alterar via script o valor do Lightning Environment?
» MouseOver alterar de cores solidas para texturas alterar script
» tem como alterar a tag de um objeto por script?
» [Dúvida]Script alterar cor de material.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos