[RESOLVIDO] Ajuda pra arrumar pequeno erro no codigo
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Ajuda pra arrumar pequeno erro no codigo
Ola eu não uso muito o c# e apareceu esse erro para mim "Cannot modify a value type return value of 'UnityEngine.RectTransform.anchorMax' .Consider storing the value in a temporary variable" eu vou deixar o script quem puder me ajudar e explicar o pq eu ficaria grato
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.UI;
public class teste : MonoBehaviour {
Camera Cam;
RaycastHit R;
GameObject[] UnidadesSel;
float MediaTamUnidades;
Vector3 DestinoTropas;
GameObject[] UnidadesSeAux;
int QndUnidades;
Image ImagemSelecao;
Vector3 PosMinMouse;
Vector3 PosMaxMouse;
Vector3 PosIniMouse;
// Use this for initialization
void Start () {
Cam = Camera.main;
UnidadesSel = GameObject.FindGameObjectsWithTag("Player");
MediaTamUnidades = 4;
}
// Update is called once per frame
void Update () {
int i = 0;
if(Input.GetMouseButtonDown(0)){
PosMinMouse = Input.mousePosition;
PosIniMouse = Input.mousePosition;
}
if(Input.GetMouseButtonDown(0)){
if (Input.mousePosition.x >= PosIniMouse.x) {
PosMaxMouse.x = Input.mousePosition.x;
} else {
PosMaxMouse.x = PosIniMouse.x;
PosMinMouse.x = Input.mousePosition.x;
}
if (Input.mousePosition.y >= PosIniMouse.y) {
PosMaxMouse.y = Input.mousePosition.y;
} else {
PosMaxMouse.y = PosIniMouse.y;
PosMinMouse.y = Input.mousePosition.y;
}
ImagemSelecao.rectTransform.anchorMax.x = PosMaxMouse.x / Screen.width;
ImagemSelecao.rectTransform.anchorMin.x = PosMinMouse.x / Screen.width;
ImagemSelecao.rectTransform.anchorMax.y = PosMaxMouse.y / Screen.height;
ImagemSelecao.rectTransform.anchorMin.y = PosMinMouse.y / Screen.height;
}
if(Input.GetMouseButtonUp(0)){
Physics.Raycast (Cam.ScreenPointToRay (PosMinMouse), out R);
PosMinMouse = R.point;
Physics.Raycast (Cam.ScreenPointToRay (PosMaxMouse), out R);
PosMaxMouse = R.point;
UnidadesSel = GameObject.FindGameObjectsWithTag ("Player");
UnidadesSeAux = new GameObject[UnidadesSel.Length];
QndUnidades = 0;
for(i=0;i<UnidadesSel.Length;i++){
if(UnidadesSel[i].transform.position.x > PosMinMouse.x &&
UnidadesSel[i].transform.position.x < PosMaxMouse.x &&
UnidadesSel[i].transform.position.z > PosMinMouse.z &&
UnidadesSel[i].transform.position.z < PosMaxMouse.z){
UnidadesSeAux [QndUnidades] = UnidadesSel [i];
QndUnidades++;
}
}
UnidadesSel = new GameObject[QndUnidades];
for (i = 0; i < QndUnidades; i++) {
UnidadesSel [i] = UnidadesSeAux [i];
}
ImagemSelecao.rectTransform.anchorMax = new Vector2 (0, 0);
ImagemSelecao.rectTransform.anchorMin = new Vector2 (0, 0);
}
i = 0;
if (Input.GetMouseButtonDown(1))
{
if (Physics.Raycast(Cam.ScreenPointToRay(Input.mousePosition), out R))
{
DestinoTropas = R.point;
foreach (GameObject Unidade in UnidadesSel)
{
NavMeshAgent NMAUnidade = Unidade.GetComponent<NavMeshAgent>();
DestinoTropas.y = Unidade.transform.position.y;
Vector3 DestinoUnidade;
DestinoUnidade = DestinoTropas;
float lado = Mathf.Floor(Mathf.Sqrt(UnidadesSel.Length));
float x;
float z;
x = (i / lado);
z = (i % lado);
DestinoUnidade -= ((lado / 2) - x) * MediaTamUnidades * Vector3.right;
DestinoUnidade -= ((lado / 2) - z) * MediaTamUnidades * Vector3.forward;
NMAUnidade.SetDestination(DestinoUnidade);
i++;
}
}
}
}
}
Última edição por dstaroski em Sex Out 06, 2017 8:26 pm, editado 1 vez(es) (Motivo da edição : Resolvido)
luizmauro123- Avançado
- PONTOS : 3077
REPUTAÇÃO : 6
Idade : 27
Áreas de atuação : Quase um programador C# e começando a aprender Unity3D
Respeito as regras :
Re: [RESOLVIDO] Ajuda pra arrumar pequeno erro no codigo
É porque você não pode modificar o valor de um vetor
voce tem que criar um vetor temporario como o proprio erro ja diz:
No caso do seu script ficaria assim
ao inves de
Nas linhas 59,60,61,62,63
voce tem que criar um vetor temporario como o proprio erro ja diz:
- Código:
new Vector2(0,0,0);
No caso do seu script ficaria assim
- Código:
ImagemSelecao.rectTransform.anchorMax = new Vector2(PosMaxMouse.x / Screen.width, PosMaxMouse.y / Screen.height);
ImagemSelecao.rectTransform.anchorMin = new Vector2(PosMinMouse.x / Screen.width, PosMinMouse.y / Screen.height);
ao inves de
- Código:
ImagemSelecao.rectTransform.anchorMax.x = PosMaxMouse.x / Screen.width;
ImagemSelecao.rectTransform.anchorMin.x = PosMinMouse.x / Screen.width;
ImagemSelecao.rectTransform.anchorMax.y = PosMaxMouse.y / Screen.height;
ImagemSelecao.rectTransform.anchorMin.y = PosMinMouse.y / Screen.height;
Nas linhas 59,60,61,62,63
Re: [RESOLVIDO] Ajuda pra arrumar pequeno erro no codigo
Ontem de madrugada eu tinha feito isso dai não deu certo por causa de um if com uma condição errada e hj vc falou pra fazer isso eu fiz e nao deu certo dai q eu fui ver o if errado kkk agora ta funcionando pftamente vlw cara
luizmauro123- Avançado
- PONTOS : 3077
REPUTAÇÃO : 6
Idade : 27
Áreas de atuação : Quase um programador C# e começando a aprender Unity3D
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] ERRO FORMAT EXCEPTION COMO ARRUMAR?
» [RESOLVIDO] Dano No Player Ajuda erro
» [RESOLVIDO] Esse erro de código é da Unity ou da versão do Script?
» [RESOLVIDO] Erro com bala ...AJUDA
» [RESOLVIDO] AJUDA ERRO COM INIMIGO
» [RESOLVIDO] Dano No Player Ajuda erro
» [RESOLVIDO] Esse erro de código é da Unity ou da versão do Script?
» [RESOLVIDO] Erro com bala ...AJUDA
» [RESOLVIDO] AJUDA ERRO COM INIMIGO
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos