


Помогите я уже не могу это решить. Кто решит 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;
}
}
}
}
}
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);
}
}
}
}
}