Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

334
Visualizações
¿Cómo ordenar el Diccionario con claves Vector3?

Imagen del escenario

Estoy recreando un sistema de enlace de borde del juego "Rimworld".

Los cuadrados morados son cuadrados individuales que deben formar "enlaces", en la dirección en que se dibujan las flechas, con esa longitud exacta.

Actualmente, no sé cómo hacer esto mejor que colocando todos esos cuadrados en un diccionario donde marco la posición de un cuadrado y su dirección (que puede ser ARRIBA o DERECHA), así:

Dictionary<Vector3Int, bool> linkSquares;

Quiero ordenar este diccionario para que los pares KV que vienen primero sean aquellos en los que Vector3Int.x es más bajo y luego donde Vector3Int.y es más bajo.

De esa manera, siempre podría comenzar en esos cuadrados (marcados con los números 1-4 en la imagen) e ir en la dirección de flecha adecuada, eliminando esos cuadrados a medida que avanzo, lo que solo dejaría otros cuadrados iniciales.

He leído que los diccionarios no se pueden ordenar, pero no sé cómo usaría un SortedDictionary para este caso. Todo este sistema parece demasiado sucio, pero no sé de qué otra manera lograría mi objetivo aquí, por lo que cualquier sugerencia de cambio de diseño es muy apreciada.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Intente definir una clase personalizada que incluya vector3 y bool juntos y luego haga una lista de objetos de esa clase. Luego puede ordenar la clase en la que desee.

Si solo necesita el bool para filtrar, puede ordenar el diccionario en una lista. Un ejemplo de cómo clasificar el diccionario en una lista es el siguiente:

 List<Vector3Int> productList = myDictionary.OrderBy(kp => kp.key.x).ThenBy(kp => kp.key.y) .ToList();

Marque esto y esto para obtener más códigos de muestra.

over 4 years ago · Santiago Trujillo Relatório

0

podría usar OrderBy para la primera clave y ThenBy para la segunda clave (Linq) y poner el resultado en un nuevo diccionario (ordenado):

 var dictsorted= linkSquares.OrderBy(k => k.Key.x).ThenBy(k => k.Key.y).ToDictionary(k => k.Key, k=> k.Value);
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda