Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Помогите я уже не могу это решить. Кто решит 10 рублей скину.

Задача:Исправьте алгоритм разбора CSV данных для расстановки кристаллов на сцене. В качестве разделителя колонок данных используется ",". Последовательность колонок "Позиция", "Имя префаба", "Углы вращения".





using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ScriptTask : MonoBehaviour
{
// создать и разместить авто на сцене согласно данным из json строки
public void ParseCSV(string InCSV, GameObject InGemRedPrefab, GameObject InGemBluePrefab, GameObject InGemGreenPrefab, GameObject InGemPurplePrefab, StringUtils InUtils)
{
string[] rows = InUtils.Split(InCSV, '\n'); // разбираем по строкам
foreach (string row in rows)
{
string[] columns = InUtils.Split(row, '+'); // разбираем по колонкам
if (columns.Length > 2)
{
string colPrefab = columns[0];
string colPosition = columns[1];
string colRotation = columns[1];
Vector3 pos = InUtils.stringToVec(colPosition);
Vector3 eulers = InUtils.stringToVec(colRotation);
Quaternion rotation = Quaternion.identity;
rotation.eulerAngles = eulers;
switch (colPrefab)
{
case "GemBluePrefab":
GameObject.Instantiate(InGemBluePrefab, pos, rotation);
break;
case "GemGreenPrefab":
GameObject.Instantiate(InGemGreenPrefab, pos, rotation);
break;
case "GemPurplePrefab":
GameObject.Instantiate(InGemPurplePrefab, pos, rotation);
break;
case "GemRedPrefab":
GameObject.Instantiate(InGemRedPrefab, pos, rotation);
break;

}
}
}
}
}

По дате
По рейтингу
Аватар пользователя
Мастер
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
 using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
 
public class ScriptTask : MonoBehaviour 
{ 
    // Создать и разместить авто на сцене согласно данным из CSV строки 
    public void ParseCSV(string InCSV, GameObject InGemRedPrefab, GameObject InGemBluePrefab, GameObject InGemGreenPrefab, GameObject InGemPurplePrefab, StringUtils InUtils) 
    { 
        string[] rows = InUtils.Split(InCSV, '\n'); // Разбиваем на строки 
        foreach (string row in rows) 
        { 
            string[] columns = InUtils.Split(row, ','); // Разбиваем на колонки, используя запятую в качестве разделителя 
            if (columns.Length >= 3) // Проверяем наличие достаточного числа колонок 
            { 
                string colPosition = columns[0].Trim(); // Удаляем лишние пробелы вокруг значения 
                string colPrefab = columns[1].Trim(); 
                string colRotation = columns[2].Trim(); 
 
                Vector3 pos = InUtils.stringToVec(colPosition); 
                Vector3 eulers = InUtils.stringToVec(colRotation); 
                Quaternion rotation = Quaternion.Euler(eulers); // Вместо создания пустого Quaternion и установки углов поворота, используем функцию Euler для непосредственного создания Quaternion с углами поворота 
 
                // Используем оператор switch для выбора префаба на основе значения в колонке "Имя префаба" 
                GameObject prefabToInstantiate = null; 
                switch (colPrefab) 
                { 
                    case "GemBluePrefab": 
                        prefabToInstantiate = InGemBluePrefab; 
                        break; 
                    case "GemGreenPrefab": 
                        prefabToInstantiate = InGemGreenPrefab; 
                        break; 
                    case "GemPurplePrefab": 
                        prefabToInstantiate = InGemPurplePrefab; 
                        break; 
                    case "GemRedPrefab": 
                        prefabToInstantiate = InGemRedPrefab; 
                        break; 
                } 
 
                // Проверяем, что префаб был выбран, и только тогда создаем экземпляр на сцене 
                if (prefabToInstantiate != null) 
                { 
                    GameObject.Instantiate(prefabToInstantiate, pos, rotation); 
                } 
            } 
        } 
    } 
}