별 보이기 (1) CSV 데이터 읽기
17753 단어 Unity
여기. 공용역에 별의 위치, 시등급 등 CSV 데이터를 배치해 사용했다.
hip_lite_major.csv 파일을 다운로드하여 Unity의 Assets 아래 적당한 위치에 놓습니다.
열수
컨텐트
1
HIP 번호: 1~120416
2
적경:시(정수)
3
적경:분(정수)
4
적경: 초 (소수)
5
적위:기호(0:-1:+)
6
적위:도(정수)
7
적위:분(정수)
8
적위: 초 (소수)
9
보기 등급: 등급(소수)
그러므로
열 1에서 HIP 번호 입력
열2-8에서 지구의 방향을 보다
열 9에서 밝기를 얻습니다.
ParticleSetTest.cs
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
namespace ParticleTest{
public class ParticleSetTest : MonoBehaviour
{
// データ型の定義
public struct HipData
{
public int hipId;
public Vector3 pos;
public Color color;
public float magnitude; // 等級
public HipData(int _id, Vector3 _pos, Color _color, float _magnitude)
{
hipId = _id;
pos = _pos;
color = _color;
magnitude = _magnitude;
}
public HipData(HipData _data)
{
hipId = _data.hipId;
pos = _data.pos;
color = _data.color;
magnitude = _data.magnitude;
}
}
// 読み込むデータ
[SerializeField] TextAsset lightFile = null;
// 読み込んだデータを格納するリスト
public List<HipData> hipList;
// Use this for initialization
void Start()
{
hipList = createHipList(lightFile);
}
// Update is called once per frame
void Update()
{
if (hipList != null)
{
foreach(HipData hip in hipList){
Debug.DrawLine(Vector3.zero,hip.pos*500f,Color.white*(1f/hip.magnitude));
}
}
}
// ファイルからデータを読み込みデータリストに格納する
List<HipData> createHipList(TextAsset _lightsFile)
{
List<HipData> list = new List<HipData>();
StringReader sr = new StringReader(_lightsFile.text);
while (sr.Peek() > -1)
{
string lineStr = sr.ReadLine();
HipData data;
if (stringToHipData(lineStr, out data))
{
list.Add(data);
}
}
sr.Close();
return list;
}
// CSV文字列からデータ型に変換
bool stringToHipData(string _hipStr, out HipData data)
{
bool ret = true;
data = new HipData();
// カンマ区切りのデータを文字列の配列に変換
string[] dataArr = _hipStr.Split(',');
try
{
// 文字列をint,floatに変換する
int hipId = int.Parse(dataArr[0]);
float hlH = float.Parse(dataArr[1]);
float hlM = float.Parse(dataArr[2]);
float hlS = float.Parse(dataArr[3]);
int hsSgn = int.Parse(dataArr[4]);
float hsH = float.Parse(dataArr[5]);
float hsM = float.Parse(dataArr[6]);
float hsS = float.Parse(dataArr[7]);
float mag = float.Parse(dataArr[8]);
Color col = Color.gray;
float hDeg = (360f / 24f) * (hlH + hlM / 60f + hlS / 3600f);
float sDeg = (hsH + hsM / 60f + hsS / 3600f) * (hsSgn == 0 ? -1f : 1f);
Quaternion rotL = Quaternion.AngleAxis(hDeg, Vector3.up);
Quaternion rotS = Quaternion.AngleAxis(sDeg, Vector3.right);
Vector3 pos = rotL * rotS * Vector3.forward;
data = new HipData(hipId, pos, Color.white, mag);
}
catch
{
ret = false;
Debug.Log("data err");
}
return ret;
}
}
}
위의 스크립트를 빈 객체에 첨부하고 lightFile에서 hiplite_major.csv를 드래그 앤 드롭합니다.실행 후 데이터가 표시하는 방향은 디버깅 라인을 표시합니다
별 보이기 (1) CSV 데이터 읽기
별 보이기(2) 입자 형태로 별 보이기
별 보이기 (3) 별자리선 보이기
별 보이기 (4) 변환 데이터
별 보이기(5)점 그룹 격자로 별 보이기
Reference
이 문제에 관하여(별 보이기 (1) CSV 데이터 읽기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ELIXIR/items/65e6fb2804c761954ac4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)