[RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
4 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Olá a Todos e uma boa Tarde, Gente Estou com uma Dúvida vi Alguns Vídeos do Marcos mas ele usa só Random já no meu dá um Problema que Fala Precisa Usar UnityEngine ou System, Eu não Estou Entendendo por Favor Alguém me Ajuda Nessa Dúvida?!
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Bom, acredito que isso não era para estar acontecendo, a dll UnityEngine tem que estar no projeto, e precisa de uma diretiva using para ser acessada e por isso possui lá em cima do script as diretivas using para as respectivas dll, System.Collections, System.Collections.Generic e UnityEngine. A class Random é derivada da dll UnityEngine, então era para voce poder acessar normalmente, caso a diretiva esteja lá e voce não apagou. Voce poderia mandar o script inteiro para verificar a diretiva?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Então até foi ver e eu uso Essa:Pokedlg escreveu:Bom, acredito que isso não era para estar acontecendo, a dll UnityEngine tem que estar no projeto, e precisa de uma diretiva using para ser acessada e por isso possui lá em cima do script as diretivas using para as respectivas dll, System.Collections, System.Collections.Generic e UnityEngine. A class Random é derivada da dll UnityEngine, então era para voce poder acessar normalmente, caso a diretiva esteja lá e voce não apagou. Voce poderia mandar o script inteiro para verificar a diretiva?
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine;
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Ah sim, entendi qual é o problema. Acontece que na dll System e UnityEngine, ambas possuem a class Random, portanto o Visual Studio identifica a class Random sendo da dll System, e por isso voce precisa utilizar um UnityEngine.Random para o Visual Studio ou seu editor identificar de qual dll a class Random voce está utilizando.
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
só uma Pergunta Aonde eu Encontro Essa dll?Pokedlg escreveu:Ah sim, entendi qual é o problema. Acontece que na dll System e UnityEngine, ambas possuem a class Random, portanto o Visual Studio identifica a class Random sendo da dll System, e por isso voce precisa utilizar um UnityEngine.Random para o Visual Studio ou seu editor identificar de qual dll a class Random voce está utilizando.
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Dll, Dynamic-link library são bibliotecas compartilhadas para utilizar e auxiliar em seus projetos, neste seu caso, voce faz a implementação das seguintes dlls:
Pela diretiva using voce estará acessando ela, o "problema" que está acontecendo com voce é que a UnityEngine e a System contém a class Random, porém o VS apenas identifica da dll System, e por isso voce tem que utilizar o UnityEngine.Random. Se voce nao quer utilizar desta maneira voce terá que remover a dll System, porém acredito que voce utiliza ela ao decorrer do seu script e por isso poderá acarretar em erros. Recomendo que não exclua ou modifique as dll da sua Unity, e também não é necessário modifica-las para este caso. Porem para voce ver todas as dlls que contém na sua unity acesse no seu Computador:
C:\Unity\Editor\Data\Resources\PackageManager\ProjectTemplates\libcache\com.unity.template.universal-7.3.1\ScriptAssemblies
e
C:\Unity\Editor\Data\MonoBleedingEdge\lib\mono\2.0-api
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine
Pela diretiva using voce estará acessando ela, o "problema" que está acontecendo com voce é que a UnityEngine e a System contém a class Random, porém o VS apenas identifica da dll System, e por isso voce tem que utilizar o UnityEngine.Random. Se voce nao quer utilizar desta maneira voce terá que remover a dll System, porém acredito que voce utiliza ela ao decorrer do seu script e por isso poderá acarretar em erros. Recomendo que não exclua ou modifique as dll da sua Unity, e também não é necessário modifica-las para este caso. Porem para voce ver todas as dlls que contém na sua unity acesse no seu Computador:
C:\Unity\Editor\Data\Resources\PackageManager\ProjectTemplates\libcache\com.unity.template.universal-7.3.1\ScriptAssemblies
e
C:\Unity\Editor\Data\MonoBleedingEdge\lib\mono\2.0-api
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Eu Consegue Acessar Qual que tem que Estar na Unity?Pokedlg escreveu:Dll, Dynamic-link library são bibliotecas compartilhadas para utilizar e auxiliar em seus projetos, neste seu caso, voce faz a implementação das seguintes dlls:
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine
Pela diretiva using voce estará acessando ela, o "problema" que está acontecendo com voce é que a UnityEngine e a System contém a class Random, porém o VS apenas identifica da dll System, e por isso voce tem que utilizar o UnityEngine.Random. Se voce nao quer utilizar desta maneira voce terá que remover a dll System, porém acredito que voce utiliza ela ao decorrer do seu script e por isso poderá acarretar em erros. Recomendo que não exclua ou modifique as dll da sua Unity, e também não é necessário modifica-las para este caso. Porem para voce ver todas as dlls que contém na sua unity acesse no seu Computador:
C:\Unity\Editor\Data\Resources\PackageManager\ProjectTemplates\libcache\com.unity.template.universal-7.3.1\ScriptAssemblies
e
C:\Unity\Editor\Data\MonoBleedingEdge\lib\mono\2.0-api
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Quero Dizer Qual DLL Tenho que Verificar?adrianobros2 escreveu:Eu Consegue Acessar Qual que tem que Estar na Unity?Pokedlg escreveu:Dll, Dynamic-link library são bibliotecas compartilhadas para utilizar e auxiliar em seus projetos, neste seu caso, voce faz a implementação das seguintes dlls:
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine
Pela diretiva using voce estará acessando ela, o "problema" que está acontecendo com voce é que a UnityEngine e a System contém a class Random, porém o VS apenas identifica da dll System, e por isso voce tem que utilizar o UnityEngine.Random. Se voce nao quer utilizar desta maneira voce terá que remover a dll System, porém acredito que voce utiliza ela ao decorrer do seu script e por isso poderá acarretar em erros. Recomendo que não exclua ou modifique as dll da sua Unity, e também não é necessário modifica-las para este caso. Porem para voce ver todas as dlls que contém na sua unity acesse no seu Computador:
C:\Unity\Editor\Data\Resources\PackageManager\ProjectTemplates\libcache\com.unity.template.universal-7.3.1\ScriptAssemblies
e
C:\Unity\Editor\Data\MonoBleedingEdge\lib\mono\2.0-api
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Não precisa verificar as dlls. Todas estão no projeto e funcionando normalmente, caso não estava iria ter erros. Olha, o que está acontecendo é que duas dll possuem classes com nomes iguais e o Vs identifica da dll System. Para voce entender o que está acontecendo tente excluir esta linha no seu script:
Exclua essa linha do seu script, NÃO exclua a dll System da pasta de arquivos da unity que te mandei anteriormente.
depois de excluir a linha do seu script, tente fazer igual ao Marcos fez e voce verá que irá funcionar, tente colocar novamente a linha "using System;" e voce verá que irá ter erros novamente.
- Código:
using System;
Exclua essa linha do seu script, NÃO exclua a dll System da pasta de arquivos da unity que te mandei anteriormente.
depois de excluir a linha do seu script, tente fazer igual ao Marcos fez e voce verá que irá funcionar, tente colocar novamente a linha "using System;" e voce verá que irá ter erros novamente.
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
o Problema é que o meu Código tem Random.Next e Agora Oque eu Faço?Pokedlg escreveu:Não precisa verificar as dlls. Todas estão no projeto e funcionando normalmente, caso não estava iria ter erros. Olha, o que está acontecendo é que duas dll possuem classes com nomes iguais e o Vs identifica da dll System. Para voce entender o que está acontecendo tente excluir esta linha no seu script:
- Código:
using System;
Exclua essa linha do seu script, NÃO exclua a dll System da pasta de arquivos da unity que te mandei anteriormente.
depois de excluir a linha do seu script, tente fazer igual ao Marcos fez e voce verá que irá funcionar, tente colocar novamente a linha "using System;" e voce verá que irá ter erros novamente.
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Então é isso que eu estou te falando, o Random.Next é da biblioteca System e o Random que o Marcos usa é da biblioteca UnityEngine, e voce utiliza as duas, porém como elas possuem a classe Random com nomes iguais, o Vs nao identifica qual das duas voce quer utilizar. Te dei o exemplo anteriormente, para voce ver que sem a biblioteca System voce consegue fazer igual ao Marcos fez, para resolver isso voce tem que utilizar UnityEngine.Random.
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
não eu Acho que Você Entendeu Errado eu vi no Vídeo e Achei Estranho mas Queria Usar o Random.NextPokedlg escreveu:Então é isso que eu estou te falando, o Random.Next é da biblioteca System e o Random que o Marcos usa é da biblioteca UnityEngine, e voce utiliza as duas, porém como elas possuem a classe Random com nomes iguais, o Vs nao identifica qual das duas voce quer utilizar. Te dei o exemplo anteriormente, para voce ver que sem a biblioteca System voce consegue fazer igual ao Marcos fez, para resolver isso voce tem que utilizar UnityEngine.Random.
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Se voce for utilizar o Random.Next voce tem que colocar System.Random:
Voce tem que especificar de qual dll voce está utilizando para o vs identificar.
- Código:
System.Random random = new System.Random();
random.Next();
Voce tem que especificar de qual dll voce está utilizando para o vs identificar.
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Eu Coloquei já Isso mas Quando Clico em Play Ele dá um Erro Assim: d_2.MoveNext, Eu não Estou Entendo?Pokedlg escreveu:Se voce for utilizar o Random.Next voce tem que colocar System.Random:
- Código:
System.Random random = new System.Random();
random.Next();
Voce tem que especificar de qual dll voce está utilizando para o vs identificar.
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Está Aqui um Pouco do Código:
- Código:
public IEnumerator GeraçãoAleatória()
{
Stopwatch sw = new Stopwatch();
sw.Start();
WaitForSeconds Atraso = new WaitForSeconds(this.GerarAtraso);
List<NívelObjeto> Lista3 = new List<NívelObjeto>();
Lista3.AddRange(this.ID.AnterioresNívels);
Lista3.Add(this.ID);
int i = 0;
int j;
new List<Direção>();
List<Direção> PontoSaídaDireção = Direções.Todos();
for (i = 0; i < this.ID.SaídaContador; i = j + 1)
{
int Índice1 = this.ControleSR.Next(0, PontoSaídaDireção.Count);
Direção Direção1 = PontoSaídaDireção[Índice1];
PontoSaídaDireção.RemoveAt(Índice1);
List<IntVector2> Lista1 = new List<IntVector2>();
bool Bandeira1 = false;
IntVector2 IntVector4 = Direção1.ParaIntVector2();
int num1 = Mathf.Max(0, (this.NívelTamanho.x - 1) * IntVector4.x);
int num2 = Mathf.Max(0, (this.NívelTamanho.x - 1) * (IntVector4.x + Mathf.Abs(IntVector4.z)));
int num3 = Mathf.Max(0, (this.NívelTamanho.z - 1) * IntVector4.z);
int num4 = Mathf.Max(0, (this.NívelTamanho.z - 1) * (IntVector4.z + Mathf.Abs(IntVector4.x)));
for (int num5 = num1; num5 <= num2; num5++)
{
for (int num6 = num3; num6 <= num4; num6++)
{
IntVector2 b = Direção1.ObterPosição().ParaIntVector2();
IntVector2 IntVector5 = default(IntVector2);
while (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)) && this.TC[num5 + IntVector5.x, num6 + IntVector5.z] == null)
{
IntVector5 += b;
}
if (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)))
{
IntVector2 IntVector6 = new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z);
if (this.TC[IntVector6.x, IntVector6.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector6.x, IntVector6.z];
if (TelhaControle1.Sala.AceitaSaída)
{
List<Direção> Lista2 = Direção1.PerpendicularList();
bool Bandeira2 = true;
foreach (Direção Direção2 in Lista2)
{
if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z] == null)
{
Bandeira2 = false;
}
else if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z].Sala != TelhaControle1.Sala)
{
Bandeira2 = false;
}
}
if (Bandeira2)
{
if (this.ID.ElevadorObjeto[(int)Direção1.ObterPosição()].TelhaGrupo.Encaixa(IntVector6 + Direção1.ParaIntVector2(), this.CT))
{
Lista1.Add(IntVector6 + Direção1.ParaIntVector2());
}
if (TelhaControle1.Sala.Tipo != SalaTipo.Corredor)
{
Bandeira1 = true;
}
}
}
}
}
}
}
if (Lista1.Count > 0)
{
if (Bandeira1)
{
for (int num7 = 0; num7 < Lista1.Count; num7++)
{
if (this.CT.TelhaParaPosição(Lista1[num7] + Direção1.ObterPosição().ParaIntVector2()).Sala.Tipo == SalaTipo.Corredor)
{
Lista1.RemoveAt(num7);
num7--;
}
}
}
int Índice2 = this.ControleSR.Next(0, Lista1.Count);
this.CriarElevador(Lista1[Índice2], Direção1.ObterPosição());
if (this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.Tipo != SalaTipo.Corredor)
{
this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.AceitaSaída = false;
}
}
else
{
UnityEngine.Debug.LogWarning("Não Havia Espaço Para a Saída na " + Direção1.ToString() + " Lado foi Encontado!");
}
j = i;
}
yield return Atraso;
}
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
ControleSR é o Random?
- Código:
System.Random ControleSR = new System.Random();
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Sim é uma VáriavelPokedlg escreveu:ControleSR é o Random?
- Código:
System.Random ControleSR = new System.Random();
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Acredito que o erro não é no Random. Este erro que voce citou não tem nada a ver com o Random.
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Você tem Alguma Ideia de Onde Pode Estar o Erro?Pokedlg escreveu:Acredito que o erro não é no Random. Este erro que voce citou não tem nada a ver com o Random.
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Ele Fala que é na Linha 36 do Código
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Nunca vi este erro, voce poderia mandar a linha?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Essa é a Linha:Pokedlg escreveu:Nunca vi este erro, voce poderia mandar a linha?
- Código:
int Índice1 = this.ControleSR.Next(0, PontoSaídaDireção.Count);
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Erro: NullReferenceException: Object reference not set to an Instance of an Object
GerarNívelAleatório+<GeraçãoAleatória>d_2.MoveNext()
GerarNívelAleatório+<GeraçãoAleatória>d_2.MoveNext()
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Código Completo:Pokedlg escreveu:Nunca vi este erro, voce poderia mandar a linha?
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine;
public class GerarNívelAleatório : MonoBehaviour
{
public void Start()
{
this.IniciarGeração();
}
public void IniciarGeração()
{
base.StartCoroutine(this.GeraçãoAleatória());
}
public IEnumerator GeraçãoAleatória()
{
Stopwatch sw = new Stopwatch();
sw.Start();
WaitForSeconds Atraso = new WaitForSeconds(this.GerarAtraso);
List<NívelObjeto> Lista3 = new List<NívelObjeto>();
Lista3.AddRange(this.ID.AnterioresNívels);
Lista3.Add(this.ID);
int i = 0;
int j;
new List<Direção>();
List<Direção> PontoSaídaDireção = Direções.Todos();
for (i = 0; i < this.ID.SaídaContador; i = j + 1)
{
int Índice1 = this.ControleSR.Next(0, PontoSaídaDireção.Count);
Direção Direção1 = PontoSaídaDireção[Índice1];
PontoSaídaDireção.RemoveAt(Índice1);
List<IntVector2> Lista1 = new List<IntVector2>();
bool Bandeira1 = false;
IntVector2 IntVector4 = Direção1.ParaIntVector2();
int num1 = Mathf.Max(0, (this.NívelTamanho.x - 1) * IntVector4.x);
int num2 = Mathf.Max(0, (this.NívelTamanho.x - 1) * (IntVector4.x + Mathf.Abs(IntVector4.z)));
int num3 = Mathf.Max(0, (this.NívelTamanho.z - 1) * IntVector4.z);
int num4 = Mathf.Max(0, (this.NívelTamanho.z - 1) * (IntVector4.z + Mathf.Abs(IntVector4.x)));
for (int num5 = num1; num5 <= num2; num5++)
{
for (int num6 = num3; num6 <= num4; num6++)
{
IntVector2 b = Direção1.ObterPosição().ParaIntVector2();
IntVector2 IntVector5 = default(IntVector2);
while (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)) && this.TC[num5 + IntVector5.x, num6 + IntVector5.z] == null)
{
IntVector5 += b;
}
if (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)))
{
IntVector2 IntVector6 = new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z);
if (this.TC[IntVector6.x, IntVector6.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector6.x, IntVector6.z];
if (TelhaControle1.Sala.AceitaSaída)
{
List<Direção> Lista2 = Direção1.PerpendicularList();
bool Bandeira2 = true;
foreach (Direção Direção2 in Lista2)
{
if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z] == null)
{
Bandeira2 = false;
}
else if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z].Sala != TelhaControle1.Sala)
{
Bandeira2 = false;
}
}
if (Bandeira2)
{
if (this.ID.ElevadorObjeto[(int)Direção1.ObterPosição()].TelhaGrupo.Encaixa(IntVector6 + Direção1.ParaIntVector2(), this.CT))
{
Lista1.Add(IntVector6 + Direção1.ParaIntVector2());
}
if (TelhaControle1.Sala.Tipo != SalaTipo.Corredor)
{
Bandeira1 = true;
}
}
}
}
}
}
}
if (Lista1.Count > 0)
{
if (Bandeira1)
{
for (int num7 = 0; num7 < Lista1.Count; num7++)
{
if (this.CT.TelhaParaPosição(Lista1[num7] + Direção1.ObterPosição().ParaIntVector2()).Sala.Tipo == SalaTipo.Corredor)
{
Lista1.RemoveAt(num7);
num7--;
}
}
}
int Índice2 = this.ControleSR.Next(0, Lista1.Count);
this.CriarElevador(Lista1[Índice2], Direção1.ObterPosição());
if (this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.Tipo != SalaTipo.Corredor)
{
this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.AceitaSaída = false;
}
}
else
{
UnityEngine.Debug.LogWarning("Não Havia Espaço Para a Saída na " + Direção1.ToString() + " Lado foi Encontado!");
}
j = i;
}
yield return Atraso;
}
public bool DireçãoSegura(IntVector2 PosiçãoInicial, Direção Direção, Direção NãoDireção)
{
bool Bandeira = false;
IntVector2 intVector = Direção.ParaIntVector2();
IntVector2 intVector2 = PosiçãoInicial + intVector;
if (this.CT.ConstanteCoordenadas(intVector2) && ((this.CT.TelhaParaPosição(intVector2) != null && this.CT.TelhaParaPosição(intVector2).Sala.Categoria != SalaCategoria.Amortecedor) || this.CT.TelhaParaPosição(intVector2) == null))
{
int num = Mathf.Max(0, intVector2.x * intVector.x);
int num2 = Mathf.Max(intVector2.x, (this.NívelTamanho.x - 1) * (intVector.x + Mathf.Abs(intVector.z)));
int num3 = Mathf.Max(0, intVector2.z * intVector.z);
int num4 = Mathf.Max(intVector2.z, (this.NívelTamanho.z - 1) * (intVector.z + Mathf.Abs(intVector.x)));
switch (NãoDireção)
{
case Direção.Norte:
num4 = intVector2.z;
break;
case Direção.Leste:
num2 = intVector2.x;
break;
case Direção.Sul:
num3 = intVector2.z;
break;
case Direção.Oeste:
num = intVector2.x;
break;
}
for (int i = num; i <= num2; i++)
{
for (int j = num3; j <= num4; j++)
{
if (this.CT.ConstanteCoordenadas(new IntVector2(i, j)) && this.TC[i, j] != null)
{
Bandeira = true;
break;
}
}
if (Bandeira)
{
break;
}
}
}
return Bandeira;
}
private void VerificarDireção(IntVector2 Posição, List<Direção> Direção, Direção NãoDireção)
{
for (int i = 0; i < Direção.Count; i++)
{
if (!this.DireçãoSegura(Posição, Direção[i], NãoDireção))
{
Direção.RemoveAt(i);
i--;
}
}
}
private void CriarElevador(IntVector2 Posição, Direção direção)
{
Elevador elevador = UnityEngine.Object.Instantiate<Elevador>(this.ID.ElevadorObjeto[(int)direção], this.CT.transform);
elevador.transform.localPosition = new Vector3((float)Posição.x * 10f + 5f, 0f, (float)Posição.z * 10f + 5f);
elevador.TelhaGrupo.AdicionarParaTelha(Posição, this.CT.TelhaParaPosição(Posição + direção.ParaIntVector2()).Sala, this.CT);
elevador.CT = this.CT;
elevador.Posição = Posição;
elevador.Deslocamento = direção.ObterPosição().ParaIntVector2();
elevador.Direção = direção;
this.elevadores.Add(elevador);
}
public ControleTodo Ct
{
get
{
return this.CT;
}
set
{
this.CT = value;
}
}
public List<TelhaControle> MatemáticaTelha(TelhaControle Telha)
{
List<TelhaControle> Lista1 = new List<TelhaControle>();
for (int i = 0; i < 4; i++)
{
IntVector2 IntVector3 = Telha.Posição + Direções.ParaInt(i).ParaIntVector2();
if (this.CT.ConstanteCoordenadas(IntVector3) && this.TC[IntVector3.x, IntVector3.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector3.x, IntVector3.z];
if (TelhaControle1.Sala == Telha.Sala)
{
Lista1.Add(TelhaControle1);
}
}
}
return Lista1;
}
private ControleTodo CT;
private System.Random ControleSR;
public ControleTodo CTObjeto;
public int SementeDeslocamento;
public TelhaControle[,] TC;
public IntVector2 NívelTamanho;
public List<Elevador> elevadores = new List<Elevador>();
public NívelObjeto ID;
public bool GerarIniciar;
public float GerarAtraso = 0.5f;
public bool NívelProgresso;
public bool NívelCriado;
}
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Tente fazer assim:
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine;
public class GerarNívelAleatório : MonoBehaviour
{
public void Start()
{
this.IniciarGeração();
}
public void IniciarGeração()
{
base.StartCoroutine(this.GeraçãoAleatória());
}
public IEnumerator GeraçãoAleatória()
{
Stopwatch sw = new Stopwatch();
sw.Start();
WaitForSeconds Atraso = new WaitForSeconds(this.GerarAtraso);
List<NívelObjeto> Lista3 = new List<NívelObjeto>();
Lista3.AddRange(this.ID.AnterioresNívels);
Lista3.Add(this.ID);
int i = 0;
int j;
new List<Direção>();
List<Direção> PontoSaídaDireção = Direções.Todos();
for (i = 0; i < this.ID.SaídaContador; i = j + 1)
{
int Índice1 = this.ControleSR.Next(0, PontoSaídaDireção.Count);
Direção Direção1 = PontoSaídaDireção[Índice1];
PontoSaídaDireção.RemoveAt(Índice1);
List<IntVector2> Lista1 = new List<IntVector2>();
bool Bandeira1 = false;
IntVector2 IntVector4 = Direção1.ParaIntVector2();
int num1 = Mathf.Max(0, (this.NívelTamanho.x - 1) * IntVector4.x);
int num2 = Mathf.Max(0, (this.NívelTamanho.x - 1) * (IntVector4.x + Mathf.Abs(IntVector4.z)));
int num3 = Mathf.Max(0, (this.NívelTamanho.z - 1) * IntVector4.z);
int num4 = Mathf.Max(0, (this.NívelTamanho.z - 1) * (IntVector4.z + Mathf.Abs(IntVector4.x)));
for (int num5 = num1; num5 <= num2; num5++)
{
for (int num6 = num3; num6 <= num4; num6++)
{
IntVector2 b = Direção1.ObterPosição().ParaIntVector2();
IntVector2 IntVector5 = default(IntVector2);
while (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)) && this.TC[num5 + IntVector5.x, num6 + IntVector5.z] == null)
{
IntVector5 += b;
}
if (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)))
{
IntVector2 IntVector6 = new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z);
if (this.TC[IntVector6.x, IntVector6.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector6.x, IntVector6.z];
if (TelhaControle1.Sala.AceitaSaída)
{
List<Direção> Lista2 = Direção1.PerpendicularList();
bool Bandeira2 = true;
foreach (Direção Direção2 in Lista2)
{
if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z] == null)
{
Bandeira2 = false;
}
else if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z].Sala != TelhaControle1.Sala)
{
Bandeira2 = false;
}
}
if (Bandeira2)
{
if (this.ID.ElevadorObjeto[(int)Direção1.ObterPosição()].TelhaGrupo.Encaixa(IntVector6 + Direção1.ParaIntVector2(), this.CT))
{
Lista1.Add(IntVector6 + Direção1.ParaIntVector2());
}
if (TelhaControle1.Sala.Tipo != SalaTipo.Corredor)
{
Bandeira1 = true;
}
}
}
}
}
}
}
if (Lista1.Count > 0)
{
if (Bandeira1)
{
for (int num7 = 0; num7 < Lista1.Count; num7++)
{
if (this.CT.TelhaParaPosição(Lista1[num7] + Direção1.ObterPosição().ParaIntVector2()).Sala.Tipo == SalaTipo.Corredor)
{
Lista1.RemoveAt(num7);
num7--;
}
}
}
int Índice2 = this.ControleSR.Next(0, Lista1.Count);
this.CriarElevador(Lista1[Índice2], Direção1.ObterPosição());
if (this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.Tipo != SalaTipo.Corredor)
{
this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.AceitaSaída = false;
}
}
else
{
UnityEngine.Debug.LogWarning("Não Havia Espaço Para a Saída na " + Direção1.ToString() + " Lado foi Encontado!");
}
j = i;
}
yield return Atraso;
}
public bool DireçãoSegura(IntVector2 PosiçãoInicial, Direção Direção, Direção NãoDireção)
{
bool Bandeira = false;
IntVector2 intVector = Direção.ParaIntVector2();
IntVector2 intVector2 = PosiçãoInicial + intVector;
if (this.CT.ConstanteCoordenadas(intVector2) && ((this.CT.TelhaParaPosição(intVector2) != null && this.CT.TelhaParaPosição(intVector2).Sala.Categoria != SalaCategoria.Amortecedor) || this.CT.TelhaParaPosição(intVector2) == null))
{
int num = Mathf.Max(0, intVector2.x * intVector.x);
int num2 = Mathf.Max(intVector2.x, (this.NívelTamanho.x - 1) * (intVector.x + Mathf.Abs(intVector.z)));
int num3 = Mathf.Max(0, intVector2.z * intVector.z);
int num4 = Mathf.Max(intVector2.z, (this.NívelTamanho.z - 1) * (intVector.z + Mathf.Abs(intVector.x)));
switch (NãoDireção)
{
case Direção.Norte:
num4 = intVector2.z;
break;
case Direção.Leste:
num2 = intVector2.x;
break;
case Direção.Sul:
num3 = intVector2.z;
break;
case Direção.Oeste:
num = intVector2.x;
break;
}
for (int i = num; i <= num2; i++)
{
for (int j = num3; j <= num4; j++)
{
if (this.CT.ConstanteCoordenadas(new IntVector2(i, j)) && this.TC[i, j] != null)
{
Bandeira = true;
break;
}
}
if (Bandeira)
{
break;
}
}
}
return Bandeira;
}
private void VerificarDireção(IntVector2 Posição, List<Direção> Direção, Direção NãoDireção)
{
for (int i = 0; i < Direção.Count; i++)
{
if (!this.DireçãoSegura(Posição, Direção[i], NãoDireção))
{
Direção.RemoveAt(i);
i--;
}
}
}
private void CriarElevador(IntVector2 Posição, Direção direção)
{
Elevador elevador = UnityEngine.Object.Instantiate<Elevador>(this.ID.ElevadorObjeto[(int)direção], this.CT.transform);
elevador.transform.localPosition = new Vector3((float)Posição.x * 10f + 5f, 0f, (float)Posição.z * 10f + 5f);
elevador.TelhaGrupo.AdicionarParaTelha(Posição, this.CT.TelhaParaPosição(Posição + direção.ParaIntVector2()).Sala, this.CT);
elevador.CT = this.CT;
elevador.Posição = Posição;
elevador.Deslocamento = direção.ObterPosição().ParaIntVector2();
elevador.Direção = direção;
this.elevadores.Add(elevador);
}
public ControleTodo Ct
{
get
{
return this.CT;
}
set
{
this.CT = value;
}
}
public List<TelhaControle> MatemáticaTelha(TelhaControle Telha)
{
List<TelhaControle> Lista1 = new List<TelhaControle>();
for (int i = 0; i < 4; i++)
{
IntVector2 IntVector3 = Telha.Posição + Direções.ParaInt(i).ParaIntVector2();
if (this.CT.ConstanteCoordenadas(IntVector3) && this.TC[IntVector3.x, IntVector3.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector3.x, IntVector3.z];
if (TelhaControle1.Sala == Telha.Sala)
{
Lista1.Add(TelhaControle1);
}
}
}
return Lista1;
}
private ControleTodo CT;
private System.Random ControleSR = new System.Random();
public ControleTodo CTObjeto;
public int SementeDeslocamento;
public TelhaControle[,] TC;
public IntVector2 NívelTamanho;
public List<Elevador> elevadores = new List<Elevador>();
public NívelObjeto ID;
public bool GerarIniciar;
public float GerarAtraso = 0.5f;
public bool NívelProgresso;
public bool NívelCriado;
}
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Agora deu Erro na Linha 52Pokedlg escreveu:Tente fazer assim:
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine;
public class GerarNívelAleatório : MonoBehaviour
{
public void Start()
{
this.IniciarGeração();
}
public void IniciarGeração()
{
base.StartCoroutine(this.GeraçãoAleatória());
}
public IEnumerator GeraçãoAleatória()
{
Stopwatch sw = new Stopwatch();
sw.Start();
WaitForSeconds Atraso = new WaitForSeconds(this.GerarAtraso);
List<NívelObjeto> Lista3 = new List<NívelObjeto>();
Lista3.AddRange(this.ID.AnterioresNívels);
Lista3.Add(this.ID);
int i = 0;
int j;
new List<Direção>();
List<Direção> PontoSaídaDireção = Direções.Todos();
for (i = 0; i < this.ID.SaídaContador; i = j + 1)
{
int Índice1 = this.ControleSR.Next(0, PontoSaídaDireção.Count);
Direção Direção1 = PontoSaídaDireção[Índice1];
PontoSaídaDireção.RemoveAt(Índice1);
List<IntVector2> Lista1 = new List<IntVector2>();
bool Bandeira1 = false;
IntVector2 IntVector4 = Direção1.ParaIntVector2();
int num1 = Mathf.Max(0, (this.NívelTamanho.x - 1) * IntVector4.x);
int num2 = Mathf.Max(0, (this.NívelTamanho.x - 1) * (IntVector4.x + Mathf.Abs(IntVector4.z)));
int num3 = Mathf.Max(0, (this.NívelTamanho.z - 1) * IntVector4.z);
int num4 = Mathf.Max(0, (this.NívelTamanho.z - 1) * (IntVector4.z + Mathf.Abs(IntVector4.x)));
for (int num5 = num1; num5 <= num2; num5++)
{
for (int num6 = num3; num6 <= num4; num6++)
{
IntVector2 b = Direção1.ObterPosição().ParaIntVector2();
IntVector2 IntVector5 = default(IntVector2);
while (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)) && this.TC[num5 + IntVector5.x, num6 + IntVector5.z] == null)
{
IntVector5 += b;
}
if (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)))
{
IntVector2 IntVector6 = new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z);
if (this.TC[IntVector6.x, IntVector6.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector6.x, IntVector6.z];
if (TelhaControle1.Sala.AceitaSaída)
{
List<Direção> Lista2 = Direção1.PerpendicularList();
bool Bandeira2 = true;
foreach (Direção Direção2 in Lista2)
{
if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z] == null)
{
Bandeira2 = false;
}
else if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z].Sala != TelhaControle1.Sala)
{
Bandeira2 = false;
}
}
if (Bandeira2)
{
if (this.ID.ElevadorObjeto[(int)Direção1.ObterPosição()].TelhaGrupo.Encaixa(IntVector6 + Direção1.ParaIntVector2(), this.CT))
{
Lista1.Add(IntVector6 + Direção1.ParaIntVector2());
}
if (TelhaControle1.Sala.Tipo != SalaTipo.Corredor)
{
Bandeira1 = true;
}
}
}
}
}
}
}
if (Lista1.Count > 0)
{
if (Bandeira1)
{
for (int num7 = 0; num7 < Lista1.Count; num7++)
{
if (this.CT.TelhaParaPosição(Lista1[num7] + Direção1.ObterPosição().ParaIntVector2()).Sala.Tipo == SalaTipo.Corredor)
{
Lista1.RemoveAt(num7);
num7--;
}
}
}
int Índice2 = this.ControleSR.Next(0, Lista1.Count);
this.CriarElevador(Lista1[Índice2], Direção1.ObterPosição());
if (this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.Tipo != SalaTipo.Corredor)
{
this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.AceitaSaída = false;
}
}
else
{
UnityEngine.Debug.LogWarning("Não Havia Espaço Para a Saída na " + Direção1.ToString() + " Lado foi Encontado!");
}
j = i;
}
yield return Atraso;
}
public bool DireçãoSegura(IntVector2 PosiçãoInicial, Direção Direção, Direção NãoDireção)
{
bool Bandeira = false;
IntVector2 intVector = Direção.ParaIntVector2();
IntVector2 intVector2 = PosiçãoInicial + intVector;
if (this.CT.ConstanteCoordenadas(intVector2) && ((this.CT.TelhaParaPosição(intVector2) != null && this.CT.TelhaParaPosição(intVector2).Sala.Categoria != SalaCategoria.Amortecedor) || this.CT.TelhaParaPosição(intVector2) == null))
{
int num = Mathf.Max(0, intVector2.x * intVector.x);
int num2 = Mathf.Max(intVector2.x, (this.NívelTamanho.x - 1) * (intVector.x + Mathf.Abs(intVector.z)));
int num3 = Mathf.Max(0, intVector2.z * intVector.z);
int num4 = Mathf.Max(intVector2.z, (this.NívelTamanho.z - 1) * (intVector.z + Mathf.Abs(intVector.x)));
switch (NãoDireção)
{
case Direção.Norte:
num4 = intVector2.z;
break;
case Direção.Leste:
num2 = intVector2.x;
break;
case Direção.Sul:
num3 = intVector2.z;
break;
case Direção.Oeste:
num = intVector2.x;
break;
}
for (int i = num; i <= num2; i++)
{
for (int j = num3; j <= num4; j++)
{
if (this.CT.ConstanteCoordenadas(new IntVector2(i, j)) && this.TC[i, j] != null)
{
Bandeira = true;
break;
}
}
if (Bandeira)
{
break;
}
}
}
return Bandeira;
}
private void VerificarDireção(IntVector2 Posição, List<Direção> Direção, Direção NãoDireção)
{
for (int i = 0; i < Direção.Count; i++)
{
if (!this.DireçãoSegura(Posição, Direção[i], NãoDireção))
{
Direção.RemoveAt(i);
i--;
}
}
}
private void CriarElevador(IntVector2 Posição, Direção direção)
{
Elevador elevador = UnityEngine.Object.Instantiate<Elevador>(this.ID.ElevadorObjeto[(int)direção], this.CT.transform);
elevador.transform.localPosition = new Vector3((float)Posição.x * 10f + 5f, 0f, (float)Posição.z * 10f + 5f);
elevador.TelhaGrupo.AdicionarParaTelha(Posição, this.CT.TelhaParaPosição(Posição + direção.ParaIntVector2()).Sala, this.CT);
elevador.CT = this.CT;
elevador.Posição = Posição;
elevador.Deslocamento = direção.ObterPosição().ParaIntVector2();
elevador.Direção = direção;
this.elevadores.Add(elevador);
}
public ControleTodo Ct
{
get
{
return this.CT;
}
set
{
this.CT = value;
}
}
public List<TelhaControle> MatemáticaTelha(TelhaControle Telha)
{
List<TelhaControle> Lista1 = new List<TelhaControle>();
for (int i = 0; i < 4; i++)
{
IntVector2 IntVector3 = Telha.Posição + Direções.ParaInt(i).ParaIntVector2();
if (this.CT.ConstanteCoordenadas(IntVector3) && this.TC[IntVector3.x, IntVector3.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector3.x, IntVector3.z];
if (TelhaControle1.Sala == Telha.Sala)
{
Lista1.Add(TelhaControle1);
}
}
}
return Lista1;
}
private ControleTodo CT;
private System.Random ControleSR = new System.Random();
public ControleTodo CTObjeto;
public int SementeDeslocamento;
public TelhaControle[,] TC;
public IntVector2 NívelTamanho;
public List<Elevador> elevadores = new List<Elevador>();
public NívelObjeto ID;
public bool GerarIniciar;
public float GerarAtraso = 0.5f;
public bool NívelProgresso;
public bool NívelCriado;
}
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Não alterei a linha 52. Qual é o erro?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
NullReferenceException: Object Reference not set to an Instance of an ObjectPokedlg escreveu:Não alterei a linha 52. Qual é o erro?
GerarNívelAleatório+<GeraçãoAleatória>d_2.MoveNext() (at Assets/Programação/C# Script/Geração de Nível Aleatória/GerarNívelAleatório.cs:52)
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Tente assim agora:
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine;
public class GerarNívelAleatório : MonoBehaviour
{
public void Start()
{
this.IniciarGeração();
}
public void IniciarGeração()
{
base.StartCoroutine(this.GeraçãoAleatória());
}
public IEnumerator GeraçãoAleatória()
{
Stopwatch sw = new Stopwatch();
sw.Start();
WaitForSeconds Atraso = new WaitForSeconds(this.GerarAtraso);
List<NívelObjeto> Lista3 = new List<NívelObjeto>();
Lista3.AddRange(this.ID.AnterioresNívels);
Lista3.Add(this.ID);
int i = 0;
int j;
new List<Direção>();
List<Direção> PontoSaídaDireção = Direções.Todos();
for (i = 0; i < this.ID.SaídaContador; i = j + 1)
{
int Índice1 = this.ControleSR.Next(0, PontoSaídaDireção.Count);
Direção Direção1 = PontoSaídaDireção[Índice1];
PontoSaídaDireção.RemoveAt(Índice1);
List<IntVector2> Lista1 = new List<IntVector2>();
bool Bandeira1 = false;
IntVector2 IntVector4 = Direção1.ParaIntVector2();
int num1 = Mathf.Max(0, (this.NívelTamanho.x - 1) * IntVector4.x);
int num2 = Mathf.Max(0, (this.NívelTamanho.x - 1) * (IntVector4.x + Mathf.Abs(IntVector4.z)));
int num3 = Mathf.Max(0, (this.NívelTamanho.z - 1) * IntVector4.z);
int num4 = Mathf.Max(0, (this.NívelTamanho.z - 1) * (IntVector4.z + Mathf.Abs(IntVector4.x)));
for (int num5 = num1; num5 <= num2; num5++)
{
for (int num6 = num3; num6 <= num4; num6++)
{
IntVector2 b = Direção1.ObterPosição().ParaIntVector2();
IntVector2 IntVector5 = default(IntVector2);
while (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)) && this.TC[num5 + IntVector5.x, num6 + IntVector5.z] == null)
{
IntVector5 += b;
}
if (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)))
{
IntVector2 IntVector6 = new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z);
if (this.TC[IntVector6.x, IntVector6.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector6.x, IntVector6.z];
if (TelhaControle1.Sala.AceitaSaída)
{
List<Direção> Lista2 = Direção1.PerpendicularList();
bool Bandeira2 = true;
foreach (Direção Direção2 in Lista2)
{
if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z] == null)
{
Bandeira2 = false;
}
else if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z].Sala != TelhaControle1.Sala)
{
Bandeira2 = false;
}
}
if (Bandeira2)
{
if (this.ID.ElevadorObjeto[(int)Direção1.ObterPosição()].TelhaGrupo.Encaixa(IntVector6 + Direção1.ParaIntVector2(), this.CT))
{
Lista1.Add(IntVector6 + Direção1.ParaIntVector2());
}
if (TelhaControle1.Sala.Tipo != SalaTipo.Corredor)
{
Bandeira1 = true;
}
}
}
}
}
}
}
if (Lista1.Count > 0)
{
if (Bandeira1)
{
for (int num7 = 0; num7 < Lista1.Count; num7++)
{
if (this.CT.TelhaParaPosição(Lista1[num7] + Direção1.ObterPosição().ParaIntVector2()).Sala.Tipo == SalaTipo.Corredor)
{
Lista1.RemoveAt(num7);
num7--;
}
}
}
int Índice2 = this.ControleSR.Next(0, Lista1.Count);
this.CriarElevador(Lista1[Índice2], Direção1.ObterPosição());
if (this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.Tipo != SalaTipo.Corredor)
{
this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.AceitaSaída = false;
}
}
else
{
UnityEngine.Debug.LogWarning("Não Havia Espaço Para a Saída na " + Direção1.ToString() + " Lado foi Encontado!");
}
j = i;
}
yield return Atraso;
}
public bool DireçãoSegura(IntVector2 PosiçãoInicial, Direção Direção, Direção NãoDireção)
{
bool Bandeira = false;
IntVector2 intVector = Direção.ParaIntVector2();
IntVector2 intVector2 = PosiçãoInicial + intVector;
if (this.CT.ConstanteCoordenadas(intVector2) && ((this.CT.TelhaParaPosição(intVector2) != null && this.CT.TelhaParaPosição(intVector2).Sala.Categoria != SalaCategoria.Amortecedor) || this.CT.TelhaParaPosição(intVector2) == null))
{
int num = Mathf.Max(0, intVector2.x * intVector.x);
int num2 = Mathf.Max(intVector2.x, (this.NívelTamanho.x - 1) * (intVector.x + Mathf.Abs(intVector.z)));
int num3 = Mathf.Max(0, intVector2.z * intVector.z);
int num4 = Mathf.Max(intVector2.z, (this.NívelTamanho.z - 1) * (intVector.z + Mathf.Abs(intVector.x)));
switch (NãoDireção)
{
case Direção.Norte:
num4 = intVector2.z;
break;
case Direção.Leste:
num2 = intVector2.x;
break;
case Direção.Sul:
num3 = intVector2.z;
break;
case Direção.Oeste:
num = intVector2.x;
break;
}
for (int i = num; i <= num2; i++)
{
for (int j = num3; j <= num4; j++)
{
if (this.CT.ConstanteCoordenadas(new IntVector2(i, j)) && this.TC[i, j] != null)
{
Bandeira = true;
break;
}
}
if (Bandeira)
{
break;
}
}
}
return Bandeira;
}
private void VerificarDireção(IntVector2 Posição, List<Direção> Direção, Direção NãoDireção)
{
for (int i = 0; i < Direção.Count; i++)
{
if (!this.DireçãoSegura(Posição, Direção[i], NãoDireção))
{
Direção.RemoveAt(i);
i--;
}
}
}
private void CriarElevador(IntVector2 Posição, Direção direção)
{
Elevador elevador = UnityEngine.Object.Instantiate<Elevador>(this.ID.ElevadorObjeto[(int)direção], this.CT.transform);
elevador.transform.localPosition = new Vector3((float)Posição.x * 10f + 5f, 0f, (float)Posição.z * 10f + 5f);
elevador.TelhaGrupo.AdicionarParaTelha(Posição, this.CT.TelhaParaPosição(Posição + direção.ParaIntVector2()).Sala, this.CT);
elevador.CT = this.CT;
elevador.Posição = Posição;
elevador.Deslocamento = direção.ObterPosição().ParaIntVector2();
elevador.Direção = direção;
this.elevadores.Add(elevador);
}
public ControleTodo Ct
{
get
{
return this.CT;
}
set
{
this.CT = value;
}
}
public List<TelhaControle> MatemáticaTelha(TelhaControle Telha)
{
List<TelhaControle> Lista1 = new List<TelhaControle>();
for (int i = 0; i < 4; i++)
{
IntVector2 IntVector3 = Telha.Posição + Direções.ParaInt(i).ParaIntVector2();
if (this.CT.ConstanteCoordenadas(IntVector3) && this.TC[IntVector3.x, IntVector3.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector3.x, IntVector3.z];
if (TelhaControle1.Sala == Telha.Sala)
{
Lista1.Add(TelhaControle1);
}
}
}
return Lista1;
}
private ControleTodo CT;
private System.Random ControleSR = new System.Random();
public ControleTodo CTObjeto;
public int SementeDeslocamento;
public TelhaControle[,] TC = new TelhaControle[0,0];
public IntVector2 NívelTamanho;
public List<Elevador> elevadores = new List<Elevador>();
public NívelObjeto ID;
public bool GerarIniciar;
public float GerarAtraso = 0.5f;
public bool NívelProgresso;
public bool NívelCriado;
}
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Não deu CertoPokedlg escreveu:Tente assim agora:
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine;
public class GerarNívelAleatório : MonoBehaviour
{
public void Start()
{
this.IniciarGeração();
}
public void IniciarGeração()
{
base.StartCoroutine(this.GeraçãoAleatória());
}
public IEnumerator GeraçãoAleatória()
{
Stopwatch sw = new Stopwatch();
sw.Start();
WaitForSeconds Atraso = new WaitForSeconds(this.GerarAtraso);
List<NívelObjeto> Lista3 = new List<NívelObjeto>();
Lista3.AddRange(this.ID.AnterioresNívels);
Lista3.Add(this.ID);
int i = 0;
int j;
new List<Direção>();
List<Direção> PontoSaídaDireção = Direções.Todos();
for (i = 0; i < this.ID.SaídaContador; i = j + 1)
{
int Índice1 = this.ControleSR.Next(0, PontoSaídaDireção.Count);
Direção Direção1 = PontoSaídaDireção[Índice1];
PontoSaídaDireção.RemoveAt(Índice1);
List<IntVector2> Lista1 = new List<IntVector2>();
bool Bandeira1 = false;
IntVector2 IntVector4 = Direção1.ParaIntVector2();
int num1 = Mathf.Max(0, (this.NívelTamanho.x - 1) * IntVector4.x);
int num2 = Mathf.Max(0, (this.NívelTamanho.x - 1) * (IntVector4.x + Mathf.Abs(IntVector4.z)));
int num3 = Mathf.Max(0, (this.NívelTamanho.z - 1) * IntVector4.z);
int num4 = Mathf.Max(0, (this.NívelTamanho.z - 1) * (IntVector4.z + Mathf.Abs(IntVector4.x)));
for (int num5 = num1; num5 <= num2; num5++)
{
for (int num6 = num3; num6 <= num4; num6++)
{
IntVector2 b = Direção1.ObterPosição().ParaIntVector2();
IntVector2 IntVector5 = default(IntVector2);
while (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)) && this.TC[num5 + IntVector5.x, num6 + IntVector5.z] == null)
{
IntVector5 += b;
}
if (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)))
{
IntVector2 IntVector6 = new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z);
if (this.TC[IntVector6.x, IntVector6.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector6.x, IntVector6.z];
if (TelhaControle1.Sala.AceitaSaída)
{
List<Direção> Lista2 = Direção1.PerpendicularList();
bool Bandeira2 = true;
foreach (Direção Direção2 in Lista2)
{
if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z] == null)
{
Bandeira2 = false;
}
else if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z].Sala != TelhaControle1.Sala)
{
Bandeira2 = false;
}
}
if (Bandeira2)
{
if (this.ID.ElevadorObjeto[(int)Direção1.ObterPosição()].TelhaGrupo.Encaixa(IntVector6 + Direção1.ParaIntVector2(), this.CT))
{
Lista1.Add(IntVector6 + Direção1.ParaIntVector2());
}
if (TelhaControle1.Sala.Tipo != SalaTipo.Corredor)
{
Bandeira1 = true;
}
}
}
}
}
}
}
if (Lista1.Count > 0)
{
if (Bandeira1)
{
for (int num7 = 0; num7 < Lista1.Count; num7++)
{
if (this.CT.TelhaParaPosição(Lista1[num7] + Direção1.ObterPosição().ParaIntVector2()).Sala.Tipo == SalaTipo.Corredor)
{
Lista1.RemoveAt(num7);
num7--;
}
}
}
int Índice2 = this.ControleSR.Next(0, Lista1.Count);
this.CriarElevador(Lista1[Índice2], Direção1.ObterPosição());
if (this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.Tipo != SalaTipo.Corredor)
{
this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.AceitaSaída = false;
}
}
else
{
UnityEngine.Debug.LogWarning("Não Havia Espaço Para a Saída na " + Direção1.ToString() + " Lado foi Encontado!");
}
j = i;
}
yield return Atraso;
}
public bool DireçãoSegura(IntVector2 PosiçãoInicial, Direção Direção, Direção NãoDireção)
{
bool Bandeira = false;
IntVector2 intVector = Direção.ParaIntVector2();
IntVector2 intVector2 = PosiçãoInicial + intVector;
if (this.CT.ConstanteCoordenadas(intVector2) && ((this.CT.TelhaParaPosição(intVector2) != null && this.CT.TelhaParaPosição(intVector2).Sala.Categoria != SalaCategoria.Amortecedor) || this.CT.TelhaParaPosição(intVector2) == null))
{
int num = Mathf.Max(0, intVector2.x * intVector.x);
int num2 = Mathf.Max(intVector2.x, (this.NívelTamanho.x - 1) * (intVector.x + Mathf.Abs(intVector.z)));
int num3 = Mathf.Max(0, intVector2.z * intVector.z);
int num4 = Mathf.Max(intVector2.z, (this.NívelTamanho.z - 1) * (intVector.z + Mathf.Abs(intVector.x)));
switch (NãoDireção)
{
case Direção.Norte:
num4 = intVector2.z;
break;
case Direção.Leste:
num2 = intVector2.x;
break;
case Direção.Sul:
num3 = intVector2.z;
break;
case Direção.Oeste:
num = intVector2.x;
break;
}
for (int i = num; i <= num2; i++)
{
for (int j = num3; j <= num4; j++)
{
if (this.CT.ConstanteCoordenadas(new IntVector2(i, j)) && this.TC[i, j] != null)
{
Bandeira = true;
break;
}
}
if (Bandeira)
{
break;
}
}
}
return Bandeira;
}
private void VerificarDireção(IntVector2 Posição, List<Direção> Direção, Direção NãoDireção)
{
for (int i = 0; i < Direção.Count; i++)
{
if (!this.DireçãoSegura(Posição, Direção[i], NãoDireção))
{
Direção.RemoveAt(i);
i--;
}
}
}
private void CriarElevador(IntVector2 Posição, Direção direção)
{
Elevador elevador = UnityEngine.Object.Instantiate<Elevador>(this.ID.ElevadorObjeto[(int)direção], this.CT.transform);
elevador.transform.localPosition = new Vector3((float)Posição.x * 10f + 5f, 0f, (float)Posição.z * 10f + 5f);
elevador.TelhaGrupo.AdicionarParaTelha(Posição, this.CT.TelhaParaPosição(Posição + direção.ParaIntVector2()).Sala, this.CT);
elevador.CT = this.CT;
elevador.Posição = Posição;
elevador.Deslocamento = direção.ObterPosição().ParaIntVector2();
elevador.Direção = direção;
this.elevadores.Add(elevador);
}
public ControleTodo Ct
{
get
{
return this.CT;
}
set
{
this.CT = value;
}
}
public List<TelhaControle> MatemáticaTelha(TelhaControle Telha)
{
List<TelhaControle> Lista1 = new List<TelhaControle>();
for (int i = 0; i < 4; i++)
{
IntVector2 IntVector3 = Telha.Posição + Direções.ParaInt(i).ParaIntVector2();
if (this.CT.ConstanteCoordenadas(IntVector3) && this.TC[IntVector3.x, IntVector3.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector3.x, IntVector3.z];
if (TelhaControle1.Sala == Telha.Sala)
{
Lista1.Add(TelhaControle1);
}
}
}
return Lista1;
}
private ControleTodo CT;
private System.Random ControleSR = new System.Random();
public ControleTodo CTObjeto;
public int SementeDeslocamento;
public TelhaControle[,] TC = new TelhaControle[0,0];
public IntVector2 NívelTamanho;
public List<Elevador> elevadores = new List<Elevador>();
public NívelObjeto ID;
public bool GerarIniciar;
public float GerarAtraso = 0.5f;
public bool NívelProgresso;
public bool NívelCriado;
}
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Ainda Está Dando o Mesmo Erro
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Eu Também Estou Tentando Resolver mas sem Ideia Você tem Alguma Ideia?Pokedlg escreveu:Tente assim agora:
- Código:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using TMPro;
using UnityEngine;
public class GerarNívelAleatório : MonoBehaviour
{
public void Start()
{
this.IniciarGeração();
}
public void IniciarGeração()
{
base.StartCoroutine(this.GeraçãoAleatória());
}
public IEnumerator GeraçãoAleatória()
{
Stopwatch sw = new Stopwatch();
sw.Start();
WaitForSeconds Atraso = new WaitForSeconds(this.GerarAtraso);
List<NívelObjeto> Lista3 = new List<NívelObjeto>();
Lista3.AddRange(this.ID.AnterioresNívels);
Lista3.Add(this.ID);
int i = 0;
int j;
new List<Direção>();
List<Direção> PontoSaídaDireção = Direções.Todos();
for (i = 0; i < this.ID.SaídaContador; i = j + 1)
{
int Índice1 = this.ControleSR.Next(0, PontoSaídaDireção.Count);
Direção Direção1 = PontoSaídaDireção[Índice1];
PontoSaídaDireção.RemoveAt(Índice1);
List<IntVector2> Lista1 = new List<IntVector2>();
bool Bandeira1 = false;
IntVector2 IntVector4 = Direção1.ParaIntVector2();
int num1 = Mathf.Max(0, (this.NívelTamanho.x - 1) * IntVector4.x);
int num2 = Mathf.Max(0, (this.NívelTamanho.x - 1) * (IntVector4.x + Mathf.Abs(IntVector4.z)));
int num3 = Mathf.Max(0, (this.NívelTamanho.z - 1) * IntVector4.z);
int num4 = Mathf.Max(0, (this.NívelTamanho.z - 1) * (IntVector4.z + Mathf.Abs(IntVector4.x)));
for (int num5 = num1; num5 <= num2; num5++)
{
for (int num6 = num3; num6 <= num4; num6++)
{
IntVector2 b = Direção1.ObterPosição().ParaIntVector2();
IntVector2 IntVector5 = default(IntVector2);
while (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)) && this.TC[num5 + IntVector5.x, num6 + IntVector5.z] == null)
{
IntVector5 += b;
}
if (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)))
{
IntVector2 IntVector6 = new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z);
if (this.TC[IntVector6.x, IntVector6.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector6.x, IntVector6.z];
if (TelhaControle1.Sala.AceitaSaída)
{
List<Direção> Lista2 = Direção1.PerpendicularList();
bool Bandeira2 = true;
foreach (Direção Direção2 in Lista2)
{
if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z] == null)
{
Bandeira2 = false;
}
else if (this.TC[IntVector6.x + Direção2.ParaIntVector2().x, IntVector6.z + Direção2.ParaIntVector2().z].Sala != TelhaControle1.Sala)
{
Bandeira2 = false;
}
}
if (Bandeira2)
{
if (this.ID.ElevadorObjeto[(int)Direção1.ObterPosição()].TelhaGrupo.Encaixa(IntVector6 + Direção1.ParaIntVector2(), this.CT))
{
Lista1.Add(IntVector6 + Direção1.ParaIntVector2());
}
if (TelhaControle1.Sala.Tipo != SalaTipo.Corredor)
{
Bandeira1 = true;
}
}
}
}
}
}
}
if (Lista1.Count > 0)
{
if (Bandeira1)
{
for (int num7 = 0; num7 < Lista1.Count; num7++)
{
if (this.CT.TelhaParaPosição(Lista1[num7] + Direção1.ObterPosição().ParaIntVector2()).Sala.Tipo == SalaTipo.Corredor)
{
Lista1.RemoveAt(num7);
num7--;
}
}
}
int Índice2 = this.ControleSR.Next(0, Lista1.Count);
this.CriarElevador(Lista1[Índice2], Direção1.ObterPosição());
if (this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.Tipo != SalaTipo.Corredor)
{
this.CT.TelhaParaPosição(Lista1[Índice2]).Sala.AceitaSaída = false;
}
}
else
{
UnityEngine.Debug.LogWarning("Não Havia Espaço Para a Saída na " + Direção1.ToString() + " Lado foi Encontado!");
}
j = i;
}
yield return Atraso;
}
public bool DireçãoSegura(IntVector2 PosiçãoInicial, Direção Direção, Direção NãoDireção)
{
bool Bandeira = false;
IntVector2 intVector = Direção.ParaIntVector2();
IntVector2 intVector2 = PosiçãoInicial + intVector;
if (this.CT.ConstanteCoordenadas(intVector2) && ((this.CT.TelhaParaPosição(intVector2) != null && this.CT.TelhaParaPosição(intVector2).Sala.Categoria != SalaCategoria.Amortecedor) || this.CT.TelhaParaPosição(intVector2) == null))
{
int num = Mathf.Max(0, intVector2.x * intVector.x);
int num2 = Mathf.Max(intVector2.x, (this.NívelTamanho.x - 1) * (intVector.x + Mathf.Abs(intVector.z)));
int num3 = Mathf.Max(0, intVector2.z * intVector.z);
int num4 = Mathf.Max(intVector2.z, (this.NívelTamanho.z - 1) * (intVector.z + Mathf.Abs(intVector.x)));
switch (NãoDireção)
{
case Direção.Norte:
num4 = intVector2.z;
break;
case Direção.Leste:
num2 = intVector2.x;
break;
case Direção.Sul:
num3 = intVector2.z;
break;
case Direção.Oeste:
num = intVector2.x;
break;
}
for (int i = num; i <= num2; i++)
{
for (int j = num3; j <= num4; j++)
{
if (this.CT.ConstanteCoordenadas(new IntVector2(i, j)) && this.TC[i, j] != null)
{
Bandeira = true;
break;
}
}
if (Bandeira)
{
break;
}
}
}
return Bandeira;
}
private void VerificarDireção(IntVector2 Posição, List<Direção> Direção, Direção NãoDireção)
{
for (int i = 0; i < Direção.Count; i++)
{
if (!this.DireçãoSegura(Posição, Direção[i], NãoDireção))
{
Direção.RemoveAt(i);
i--;
}
}
}
private void CriarElevador(IntVector2 Posição, Direção direção)
{
Elevador elevador = UnityEngine.Object.Instantiate<Elevador>(this.ID.ElevadorObjeto[(int)direção], this.CT.transform);
elevador.transform.localPosition = new Vector3((float)Posição.x * 10f + 5f, 0f, (float)Posição.z * 10f + 5f);
elevador.TelhaGrupo.AdicionarParaTelha(Posição, this.CT.TelhaParaPosição(Posição + direção.ParaIntVector2()).Sala, this.CT);
elevador.CT = this.CT;
elevador.Posição = Posição;
elevador.Deslocamento = direção.ObterPosição().ParaIntVector2();
elevador.Direção = direção;
this.elevadores.Add(elevador);
}
public ControleTodo Ct
{
get
{
return this.CT;
}
set
{
this.CT = value;
}
}
public List<TelhaControle> MatemáticaTelha(TelhaControle Telha)
{
List<TelhaControle> Lista1 = new List<TelhaControle>();
for (int i = 0; i < 4; i++)
{
IntVector2 IntVector3 = Telha.Posição + Direções.ParaInt(i).ParaIntVector2();
if (this.CT.ConstanteCoordenadas(IntVector3) && this.TC[IntVector3.x, IntVector3.z] != null)
{
TelhaControle TelhaControle1 = this.TC[IntVector3.x, IntVector3.z];
if (TelhaControle1.Sala == Telha.Sala)
{
Lista1.Add(TelhaControle1);
}
}
}
return Lista1;
}
private ControleTodo CT;
private System.Random ControleSR = new System.Random();
public ControleTodo CTObjeto;
public int SementeDeslocamento;
public TelhaControle[,] TC = new TelhaControle[0,0];
public IntVector2 NívelTamanho;
public List<Elevador> elevadores = new List<Elevador>();
public NívelObjeto ID;
public bool GerarIniciar;
public float GerarAtraso = 0.5f;
public bool NívelProgresso;
public bool NívelCriado;
}
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Não, não faço a minima ideia do porque está ocorrendo este erro, mas e a linha 36 resolveu?
Pokedlg- ProgramadorMaster
- PONTOS : 2337
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Sim na Linha 36 ResolveuPokedlg escreveu:Não, não faço a minima ideia do porque está ocorrendo este erro, mas e a linha 36 resolveu?
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
bem, acho que isso é um conflito, pois em system existe random, e em unityengine também, logo se utilizar os dois (system e unityengine) vai ter conflito no uso, mas só no uso, então vai ter que especificar. Aconteceu comigo também então é resolvido especificando ou tirando o system para poder usar o unityengine.random.
poyser- Avançado
- PONTOS : 3034
REPUTAÇÃO : 46
Idade : 26
Áreas de atuação : https://play.google.com/store/apps/dev?id=6312026995180986052
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Gente por favor, não tirem o System, pois pode ser que ele esteja utilizando alguma classe dessa DLL e aí vai ficar dando erro mesmo.
Para especificar qual Classe "Random" vc quer usar basta explicitar a DLL.
Se quer usar a Random do System, utilize:
Se quer usar o Random da Unity, só explicitar na chamada:
Quando ocorre conflito de classes de mesmo nome em DLLs sendo utilizadas simultaneamente no script, existem duas soluções: Ou vc explicita (como acima) qual DLL da classe vai usar, ou vc cria um alias (um apelido) para essa DLL.
Para especificar qual Classe "Random" vc quer usar basta explicitar a DLL.
Se quer usar a Random do System, utilize:
- Código:
System.Random random = new Random();
Se quer usar o Random da Unity, só explicitar na chamada:
- Código:
UnityEngine.Random.Range(minValue, maxValue);
Quando ocorre conflito de classes de mesmo nome em DLLs sendo utilizadas simultaneamente no script, existem duas soluções: Ou vc explicita (como acima) qual DLL da classe vai usar, ou vc cria um alias (um apelido) para essa DLL.
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Obrigado Pela Dica Resolveu o Problema mas Agora ele Está Dando Outro ProblemaMayLeone escreveu:Gente por favor, não tirem o System, pois pode ser que ele esteja utilizando alguma classe dessa DLL e aí vai ficar dando erro mesmo.
Para especificar qual Classe "Random" vc quer usar basta explicitar a DLL.
Se quer usar a Random do System, utilize:
- Código:
System.Random random = new Random();
Se quer usar o Random da Unity, só explicitar na chamada:
- Código:
UnityEngine.Random.Range(minValue, maxValue);
Quando ocorre conflito de classes de mesmo nome em DLLs sendo utilizadas simultaneamente no script, existem duas soluções: Ou vc explicita (como acima) qual DLL da classe vai usar, ou vc cria um alias (um apelido) para essa DLL.
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Re: [RESOLVIDO] Por que tem que Usar UnityEngine.Random ou System.Random?
Entre Essas Linhas:
- Código:
IntVector2 b = Direção1.ObterPosição().ParaIntVector2();
IntVector2 IntVector5 = default(IntVector2);
while (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)) && this.TC[num5 + IntVector5.x, num6 + IntVector5.z] == null)
{
IntVector5 += b;
}
if (this.CT.ConstanteCoordenadas(new IntVector2(num5 + IntVector5.x, num6 + IntVector5.z)))
- Código:
public ControleTodo CT;
- Código:
IndexOutOfRangeException: Index was outside the bounds of the array.
GerarNívelAleatório+<GeraçãoAleatória>d_2.MoveNext() (at Assets/Programação/C# Script/Geração de Nível Aleatório/GerarNívelAleatório.cs:52)
adrianobros2- Avançado
- PONTOS : 2058
REPUTAÇÃO : 7
Idade : 16
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] Conflito entre bibliotecas (UnityEngine e System)
» [RESOLVIDO] Dúvida com o Novo Input System
» [RESOLVIDO]Não consigo compilar meu projeto, erro UnityEngine.GUIUtility:..
» [RESOLVIDO] Problema no Input System
» [RESOLVIDO] ERRO NO CREATE SYSTEM
» [RESOLVIDO] Dúvida com o Novo Input System
» [RESOLVIDO]Não consigo compilar meu projeto, erro UnityEngine.GUIUtility:..
» [RESOLVIDO] Problema no Input System
» [RESOLVIDO] ERRO NO CREATE SYSTEM
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos