生活随笔
收集整理的這篇文章主要介紹了
Unity3D 广播星历与精密星历
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通過廣播星歷文件計算過衛星的軌跡并與精密星歷作比較,計算殘差并繪圖,具體效果參看下圖。
public static class SystemConstant
{public static double omegae
= 7.2921151467e
-5; public static double mu
= 3.986005e14
;
}
using System
;
using System
.Collections
.Generic
;
using UnityEngine
;
using System
.IO
;
public class PrecisionEphemerisReader
{public PrecisionEphemerisReader(int headline
=22){FileHeadLine
= headline
;}private int FileHeadLine
;public PrecisionEphemerisFile LoadPrecisionEphemerisFile(string Path
){PrecisionEphemerisFile PrecisionEphemerisFile
= new PrecisionEphemerisFile();using (StreamReader reader
= File
.OpenText(Path
)){PrecisionEphemerisFile
.FileHead
.Clear(); for (int i
= 0; i
< FileHeadLine
; i
++){PrecisionEphemerisFile
.FileHead
.Add(reader
.ReadLine());}while (true){string value = reader
.ReadLine();if (value != "EOF"){PrecisionEphemerisModle modle
= new PrecisionEphemerisModle();modle
.TimeStamp
= ResloveTimeStamp(value);for (int i
= 0; i
< 32; i
++){SatelliteInfo info
= ResolveSatelliteInfo(reader
.ReadLine());modle
.SatelliteInfos
.Add(info
);}PrecisionEphemerisFile
.Modles
.Add(modle
);}else{break;}}return PrecisionEphemerisFile
;}}private DateTime ResloveTimeStamp(string info
){string[] infos
= info
.Split(new string[] {" "}, StringSplitOptions
.RemoveEmptyEntries
);int year
= int.Parse(infos
[1]);int mouth
= int.Parse(infos
[2]);int day
= int.Parse(infos
[3]);int hour
= int.Parse(infos
[4]);int minnute
= int.Parse(infos
[5]);return new DateTime(year
, mouth
, day
, hour
, minnute
, 0);}private SatelliteInfo ResolveSatelliteInfo(string info
){string[] infos
= info
.Split(new string[] {" "}, StringSplitOptions
.RemoveEmptyEntries
);if (infos
.Length
== 9){SatelliteInfo m_SatelliteInfo
=new SatelliteInfo();m_SatelliteInfo
.SatelliteID
= infos
[0];m_SatelliteInfo
.X_Coordinate
=double.Parse(infos
[1])*1000;m_SatelliteInfo
.Y_Coordinate
=double.Parse(infos
[2])*1000;m_SatelliteInfo
.Z_Coordinate
=double.Parse(infos
[3])*1000;m_SatelliteInfo
.Clock_Microsec
=double.Parse(infos
[4]);m_SatelliteInfo
.X_sdev
=int.Parse(infos
[5]);m_SatelliteInfo
.Y_sdev
=int.Parse(infos
[6]);m_SatelliteInfo
.Z_sdev
=int.Parse(infos
[7]);m_SatelliteInfo
.C_sdev
= int.Parse(infos
[8]);return m_SatelliteInfo
;} if(infos
.Length
== 5){SatelliteInfo m_SatelliteInfo
=new SatelliteInfo();m_SatelliteInfo
.SatelliteID
= infos
[0];m_SatelliteInfo
.X_Coordinate
=double.Parse(infos
[1])*1000;m_SatelliteInfo
.Y_Coordinate
=double.Parse(infos
[2])*1000;m_SatelliteInfo
.Z_Coordinate
=double.Parse(infos
[3])*1000;m_SatelliteInfo
.Clock_Microsec
=double.Parse(infos
[4]);return m_SatelliteInfo
;}return new SatelliteInfo();}
}public class PrecisionEphemerisFile
{public List
<string> FileHead
= new List<string>();public List
<PrecisionEphemerisModle
> Modles
= new List<PrecisionEphemerisModle>();public string FileHeadInfo(){if (FileHead
.Count
> 0){string temp
= String
.Empty
;foreach (var item
in FileHead
){temp
= temp
+ item
+ "\r\n";}return temp
;}else{return "沒有文件頭信息";}}public string ContentInfo(){if (Modles
.Count
>0){string temp
= string.Empty
;foreach (var item
in Modles
){temp
= temp
+ item
.TimeStamp
+ "\r\n";temp
= temp
+ item
.LogInfos() + "\r\n";}return temp
;}else{return "數據為空";}}
}public class PrecisionEphemerisModle
{public DateTime TimeStamp
= new DateTime();public List
<SatelliteInfo
> SatelliteInfos
= new List<SatelliteInfo>();public string LogInfos(){string temp
=String
.Empty
;foreach (var item
in SatelliteInfos
){temp
= temp
+ item
.LogSatelliteInfo()+"\r\n";}return temp
;}
}public class SatelliteInfo
{public string SatelliteID
=String
.Empty
;public double X_Coordinate
;public double Y_Coordinate
;public double Z_Coordinate
;public double Clock_Microsec
;public int X_sdev
;public int Y_sdev
;public int Z_sdev
;public int C_sdev
;public string LogSatelliteInfo(){if (SatelliteID
!= String
.Empty
){return String
.Format
("衛星ID:{0}; X坐標:{1},Y坐標:{2}, Z坐標:{3}, Clock_Microsec:{4},X_sdev:{5},Y_sdev:{6},Z_sdev:{7},C_sdev:{8} ",SatelliteID
,X_Coordinate
,Y_Coordinate
,Z_Coordinate
,Clock_Microsec
,X_sdev
,Y_sdev
,Z_sdev
,C_sdev
);}return "衛星信息為空";}
}
using System
;
using System
.Collections
.Generic
;
using System
.IO
;
using UnityEngine
;public class BroadcastEphemerisReader
{public BroadcastEphemerisReader(int fileHeadLine
=8){FileHeadLine
= fileHeadLine
;}private int FileHeadLine
;public BroadcaseEphemerisFile LoadBroadcastEphemerisFile( string Path
){BroadcaseEphemerisFile m_BroadcaseEphemerisFile
=new BroadcaseEphemerisFile();using (StreamReader reader
= File
.OpenText(Path
)){for (int i
= 0; i
< FileHeadLine
; i
++){string temp
= reader
.ReadLine();m_BroadcaseEphemerisFile
.FileHead
.Add(temp
);}int lineNum
= 8;while (true){string temp01
=reader
.ReadLine();if (temp01
!=null){lineNum
+= 8;BroadcaseEphemerisModle modle
=new BroadcaseEphemerisModle();modle
.SatelliteID
= int.Parse(temp01
.Substring(0, 2));string[] infos
= temp01
.Substring(2,20).Split(new string[] {" "}, StringSplitOptions
.RemoveEmptyEntries
);modle
.TimeStamp
=new DateTime(int.Parse(infos
[0])+2000,int.Parse(infos
[1]),int.Parse(infos
[2]),int.Parse(infos
[3]),int.Parse(infos
[4]),(int)float.Parse(infos
[5]));modle
.衛星時鐘的偏移
=Double
.Parse(temp01
.Substring(22, 19));modle
.衛星時鐘的漂移
=Double
.Parse(temp01
.Substring(41, 19));modle
.衛星時鐘的漂移速度
=Double
.Parse(temp01
.Substring(60, 19));string temp02
= reader
.ReadLine();modle
.IODE
= Double
.Parse(temp02
.Substring(3, 19));modle
.Crs
= Double
.Parse(temp02
.Substring(22, 19));modle
.Delta_R
= Double
.Parse(temp02
.Substring(41, 19));modle
.Mo
= Double
.Parse(temp02
.Substring(60, 19));string temp03
= reader
.ReadLine();modle
.Cuc
=Double
.Parse(temp03
.Substring(3, 19));modle
.e
= Double
.Parse(temp03
.Substring(22, 19));modle
.Cus
=Double
.Parse(temp03
.Substring(41, 19));modle
.根號a
=Double
.Parse(temp03
.Substring(60, 19));string temp04
= reader
.ReadLine();modle
.Toe
=Double
.Parse(temp04
.Substring(3, 19));modle
.Cic
= Double
.Parse(temp04
.Substring(22, 19));modle
.OUo
=Double
.Parse(temp04
.Substring(41, 19));modle
.Cis
=Double
.Parse(temp04
.Substring(60, 19));string temp05
= reader
.ReadLine();modle
.I0
=Double
.Parse(temp05
.Substring(3, 19));modle
.Crc
= Double
.Parse(temp05
.Substring(22, 19));modle
.w
=Double
.Parse(temp05
.Substring(41, 19));modle
.OU
=Double
.Parse(temp05
.Substring(60, 19));string temp06
= reader
.ReadLine();modle
.I
=Double
.Parse(temp06
.Substring(3, 19));modle
.L2上的碼
= Double
.Parse(temp06
.Substring(22, 19));modle
.GPS周數
=Double
.Parse(temp06
.Substring(41, 19));modle
.L2碼數據標記
=Double
.Parse(temp06
.Substring(60, 19));string temp07
= reader
.ReadLine();modle
.衛星精度
=Double
.Parse(temp07
.Substring(3, 19));modle
.衛星健康
= Double
.Parse(temp07
.Substring(22, 19));modle
.Tgd
=Double
.Parse(temp07
.Substring(41, 19));modle
.IODC
=Double
.Parse(temp07
.Substring(60, 19));string temp08
= reader
.ReadLine();modle
.電文發送時刻
=Double
.Parse(temp08
.Substring(3, 19));modle
.擬合區間
= Double
.Parse(temp08
.Substring(22, 19));modle
.Unuse01
=Double
.Parse(temp08
.Substring(41, 19));modle
.Unuse02
=Double
.Parse(temp08
.Substring(60, 19));m_BroadcaseEphemerisFile
.modles
.Add(modle
);}else{break;}}return m_BroadcaseEphemerisFile
;}}
}public class BroadcaseEphemerisFile
{public List
<string> FileHead
=new List<string>();public List
<BroadcaseEphemerisModle
> modles
=new List<BroadcaseEphemerisModle>();public string LogFileHead(){if (FileHead
.Count
> 0){string temp
=String
.Empty
;foreach (var item
in FileHead
){temp
= temp
+ item
+ "\r\n";}return temp
;}return "文件頭為空";}
}public class BroadcaseEphemerisModle
{public string LogBroadcaseEphemerisModle(){return String
.Format("衛星編號:{0},時間戳:{1},衛星時鐘的偏移:{2},衛星時鐘的漂移:{3},衛星時鐘的漂移速度:{4},IODE:{5},Crs:{6},Delta_R:{7}," +"Mo:{8},Cuc:{9}, e:{10}, Cus:{11}, 根號a:{12}, Toe:{13}, Cic:{14}, OUo:{15}, Cis:{16}, I0:{17}, Crc:{18}, w:{19}, OU:{20}, I:{21}, L2上的碼:{22}, GPS周數:{23}, L2碼數據標記:{24}," +"衛星精度:{25}, 衛星健康:{26}, Tgd:{27}, IODC:{28}, 電文發送時刻:{29}, 擬合區間:{30}, Unuse01:{31}, Unuse02:{32}" , SatelliteID
,TimeStamp
,衛星時鐘的偏移
,衛星時鐘的漂移
,衛星時鐘的漂移速度
,IODE
,Crs
,Delta_R
,Mo
,Cuc
,e
,Cus
,根號a
,Toe
,Cic
,OUo
,Cis
,I0
,Crc
,w
,OU
,I
,L2上的碼
,GPS周數
,L2碼數據標記
,衛星精度
,衛星健康
,Tgd
,IODC
,電文發送時刻
,擬合區間
,Unuse01
,Unuse02
);}public int SatelliteID
;public DateTime TimeStamp
;public double 衛星時鐘的偏移
;public double 衛星時鐘的漂移
;public double 衛星時鐘的漂移速度
;public double IODE
;public double Crs
;public double Delta_R
;public double Mo
;public double Cuc
;public double e
;public double Cus
;public double 根號a
;public double Toe
;public double Cic
;public double OUo
;public double Cis
;public double I0
;public double Crc
;public double w
;public double OU
;public double I
;public double L2上的碼
;public double GPS周數
;public double L2碼數據標記
;public double 衛星精度
;public double 衛星健康
;public double Tgd
;public double IODC
;public double 電文發送時刻
;public double 擬合區間
;public double Unuse01
;public double Unuse02
;
}
using System
;
using System
.Collections
.Generic
;
using System
.Windows
.Forms
;
using UnityEngine
;
using UnityEngine
.UI
;
using XCharts
;
using Application
= UnityEngine
.Application
;
using Button
= UnityEngine
.UI
.Button
;public class RootMsg : MonoBehaviour
{private int ID
= 1;private static Text m_text
;private LineChart PrecisionEphemerisChart
;private LineChart BroadcaseEphemerisChart
;private LineChart ResidualChart
;private Dropdown SateliteID
;private Button Btn_PrecisionImg
;private Button Btn_BroadcaseImg
;private Button Btn_ResidualImg
;private string bPath
=String
.Empty
;private string pPath
=String
.Empty
;public PrecisionEphemerisFile m_PrecisionEphemerisFile
=new PrecisionEphemerisFile();public BroadcaseEphemerisFile m_BroadcaseEphemerisFile
=new BroadcaseEphemerisFile();private List
<double> PrecisionEphemerisPos_X
=new List<double>();private List
<double> PrecisionEphemerisPos_Y
=new List<double>();private List
<double> PrecisionEphemerisPos_Z
=new List<double>();private List
<double> BroadcaseEphemerisPos_X
=new List<double>();private List
<double> BroadcaseEphemerisPos_Y
=new List<double>();private List
<double> BroadcaseEphemerisPos_Z
=new List<double>();private List
<double> ResidualPos_X
= new List<double>();private List
<double> ResidualPos_Y
=new List<double>();private List
<double> ResidualPos_Z
=new List<double>();public void GetBroadcastEphemerPath(){bPath
=String
.Empty
;OpenFileDialog dialog
= new OpenFileDialog();dialog
.InitialDirectory
= "D:\\"; if (dialog
.ShowDialog() == DialogResult
.OK
){bPath
= dialog
.FileName
;LogInfo(String
.Format("廣播星歷文件路徑:{0}",bPath
));}}public void GetPrecisionEphemerPath(){pPath
=String
.Empty
;OpenFileDialog dialog
= new OpenFileDialog();dialog
.InitialDirectory
= "D:\\"; if (dialog
.ShowDialog() == DialogResult
.OK
){pPath
= dialog
.FileName
;LogInfo(String
.Format("精密星歷文件路徑:{0}",pPath
));}}public void LoadFile(){if (bPath
!= String
.Empty
&& pPath
!= String
.Empty
){m_PrecisionEphemerisFile
= new PrecisionEphemerisReader().LoadPrecisionEphemerisFile(pPath
);m_BroadcaseEphemerisFile
=new BroadcastEphemerisReader().LoadBroadcastEphemerisFile(bPath
);LogInfo(string.Format("精密星歷加載文件{0}組,廣播星歷加載文件{1}組",m_PrecisionEphemerisFile
.Modles
.Count
,m_BroadcaseEphemerisFile
.modles
.Count
));}else{LogInfo("需要先選擇星歷路徑");}}public void PrecisionEphemerisImage(){PrecisionEphemerisChart
.gameObject
.SetActive(true);BroadcaseEphemerisChart
.gameObject
.SetActive(false);ResidualChart
.gameObject
.SetActive(false);PrecisionEphemerisChart
.title
.text
= string.Format("{0}號衛星精密星歷圖", ID
);for (int i
= 0; i
< 24; i
++){PrecisionEphemerisChart
.UpdateData("X", i
, (float) PrecisionEphemerisPos_X
[i
]);PrecisionEphemerisChart
.UpdateData("Y", i
, (float) PrecisionEphemerisPos_Y
[i
]);PrecisionEphemerisChart
.UpdateData("Z", i
, (float) PrecisionEphemerisPos_Z
[i
]);}}public void BroadcaseEphemerisImage(){PrecisionEphemerisChart
.gameObject
.SetActive(false);BroadcaseEphemerisChart
.gameObject
.SetActive(true);ResidualChart
.gameObject
.SetActive(false);BroadcaseEphemerisChart
.title
.text
= string.Format("{0}號衛星廣播星歷圖", ID
);for (int i
= 0; i
< 24; i
++){BroadcaseEphemerisChart
.UpdateData("X", i
, (float) BroadcaseEphemerisPos_X
[i
]);BroadcaseEphemerisChart
.UpdateData("Y", i
, (float) BroadcaseEphemerisPos_Y
[i
]);BroadcaseEphemerisChart
.UpdateData("Z", i
, (float) BroadcaseEphemerisPos_Z
[i
]);}}public void ResidualImage(){ PrecisionEphemerisChart
.gameObject
.SetActive(false);BroadcaseEphemerisChart
.gameObject
.SetActive(false);ResidualChart
.gameObject
.SetActive(true);ResidualChart
.title
.text
= string.Format("{0}號衛星殘差圖", ID
);for (int i
= 0; i
< 7; i
++){ResidualChart
.UpdateData("X", i
, (float) ResidualPos_X
[i
]);ResidualChart
.UpdateData("Y", i
, (float) ResidualPos_Y
[i
]);ResidualChart
.UpdateData("Z", i
, (float) ResidualPos_Z
[i
]);}}public void SelectSatelite(){ID
= int.Parse(SateliteID
.captionText
.text
);LogInfo("衛星編號:"+ID
);}public void CalculateDraw(){if (m_BroadcaseEphemerisFile
.FileHead
.Count
== 0){LogInfo("請先加載文件");return;}ProcessPrecisionEphemeris();ProcessBroadcaseEphemeris();ProvessResidualEphemeris();Btn_BroadcaseImg
.interactable
= true;Btn_PrecisionImg
.interactable
= true;Btn_ResidualImg
.interactable
= true;}private void ProcessPrecisionEphemeris(){List
<PrecisionEphemerisModle
> temp
=new List<PrecisionEphemerisModle>();for (int i
= 0; i
< 24; i
++){temp
.Add(m_PrecisionEphemerisFile
.Modles
[i
*4]);}List
<double> result_X
=new List<double>();List
<double> result_Y
=new List<double>();List
<double> result_Z
=new List<double>();foreach (var item
in temp
){result_X
.Add(item
.SatelliteInfos
[ID-1].X_Coordinate
);result_Y
.Add(item
.SatelliteInfos
[ID-1].Y_Coordinate
);result_Z
.Add(item
.SatelliteInfos
[ID-1].Z_Coordinate
);}PrecisionEphemerisPos_X
= result_X
;PrecisionEphemerisPos_Y
= result_Y
;PrecisionEphemerisPos_Z
= result_Z
;}private void ProcessBroadcaseEphemeris(){List
<BroadcaseEphemerisModle
> modles
=m_BroadcaseEphemerisFile
.modles
.FindAll((modle
=> modle
.SatelliteID
== ID
));CalculatePos(modles
);}private void CalculatePos(List
<BroadcaseEphemerisModle
> modles
){List
<double> result_X
=new List<double>();List
<double> result_Y
=new List<double>();List
<double> result_Z
=new List<double>();for (int i
= 0; i
< 24; i
++){DateTime time
=new DateTime(modles
[0].TimeStamp
.Year
,modles
[0].TimeStamp
.Month
,modles
[0].TimeStamp
.Day
,i
,0,0);BroadcaseEphemerisModle modle
= modles
[0];TimeSpan span
= time
- modles
[0].TimeStamp
;double second
= Math
.Abs(span
.TotalSeconds
);foreach (var item
in modles
){TimeSpan span01
= time
- item
.TimeStamp
;double second01
= Math
.Abs(span01
.TotalSeconds
);if (second
> second01
){modle
= item
;second
= second01
;}}double tk
= (time
- modle
.TimeStamp
).TotalSeconds
;double A
= Math
.Pow(modle
.根號a
, 2);double n0
=Math
.Sqrt(SystemConstant
.mu
/Math
.Pow(A
,3));double n
= n0
+ modle
.Delta_R
* tk
; double Mk
= modle
.Mo
+ n
* tk
;if (Mk
< 0){Mk
+= 2 * Math
.PI
;}if (Mk
> 2 * Math
.PI
){Mk
-= 2 * Math
.PI
;}double Eold
= Mk
;double Enew
= Mk
+modle
.e
*Math
.Sin(Eold
);int j
= 1;while (Math
.Abs(Enew
-Eold
)>1e
-8){Eold
= Enew
;Enew
= Mk
+modle
.e
*Math
.Sin(Eold
);j
+= 1;if (j
> 10){break;}}double EK
= Enew
;double cosNuk
=(Math
.Cos(EK
)-modle
.e
)/(1-modle
.e
*Math
.Cos(EK
));double sinNuk
= (Math
.Sqrt(1 - Math
.Pow(modle
.e
, 2))*Math
.Sin(EK
))/(1-modle
.e
*Math
.Cos(EK
));double NK
= Math
.Atan(sinNuk
/ cosNuk
);if (cosNuk
< 0){NK
+= Math
.PI
;}double PK
= NK
+ modle
.w
;double deltauk
= modle
.Cus
* Math
.Sin(2 * PK
) + modle
.Cuc
* Math
.Cos(2 * PK
);double deltark
= modle
.Crs
* Math
.Sin(2 * PK
) + modle
.Crc
* Math
.Cos(2 * PK
);double deltaik
= modle
.Cis
* Math
.Sin(2 * PK
) + modle
.Cic
* Math
.Cos(2 * PK
);double uk
= PK
+ deltauk
;double rk
= A
* (1 - modle
.e
* Math
.Cos(EK
)) + deltark
;double ik
= modle
.I0
+ modle
.I
* tk
+ deltaik
;double x1k
= rk
* Math
.Cos(uk
);double y1k
= rk
* Math
.Sin(uk
);double omegak
= modle
.OUo
+ (modle
.OU
- SystemConstant
.omegae
) * tk
- SystemConstant
.omegae
* modle
.Toe
;double x
= x1k
* Math
.Cos(omegak
) - y1k
* Math
.Cos(ik
) * Math
.Sin(omegak
);double y
= x1k
* Math
.Sin(omegak
) + y1k
* Math
.Cos(ik
) * Math
.Cos(omegak
);double z
= y1k
* Math
.Sin(ik
);result_X
.Add(x
);result_Y
.Add(y
);result_Z
.Add(z
);}BroadcaseEphemerisPos_X
= result_X
;BroadcaseEphemerisPos_Y
= result_Y
;BroadcaseEphemerisPos_Z
= result_Z
;}private void ProvessResidualEphemeris(){ResidualPos_X
.Clear();ResidualPos_Y
.Clear();ResidualPos_Z
.Clear();for (int i
= 0; i
< 14; i
+=2){ResidualPos_X
.Add(PrecisionEphemerisPos_X
[i
] - BroadcaseEphemerisPos_X
[i
]);ResidualPos_Y
.Add(PrecisionEphemerisPos_Y
[i
] - BroadcaseEphemerisPos_Y
[i
]);ResidualPos_Z
.Add(PrecisionEphemerisPos_Z
[i
] - BroadcaseEphemerisPos_Z
[i
]);}}public void ClearData(){PrecisionEphemerisPos_X
.Clear();PrecisionEphemerisPos_X
.Clear();PrecisionEphemerisPos_X
.Clear();PrecisionEphemerisPos_X
.Clear();PrecisionEphemerisPos_X
.Clear();PrecisionEphemerisPos_X
.Clear();PrecisionEphemerisPos_X
.Clear();PrecisionEphemerisPos_X
.Clear();PrecisionEphemerisPos_X
.Clear();Btn_BroadcaseImg
.interactable
= false;Btn_PrecisionImg
.interactable
= false;Btn_ResidualImg
.interactable
= false;PrecisionEphemerisChart
.gameObject
.SetActive(false);BroadcaseEphemerisChart
.gameObject
.SetActive(false);ResidualChart
.gameObject
.SetActive(false);}public void QuitApp(){Application
.Quit();}void Start(){m_text
= GameObject
.Find("InfoTip").GetComponent<Text>();PrecisionEphemerisChart
= GameObject
.Find("PrecisionEphemerisChart").GetComponent<LineChart>();BroadcaseEphemerisChart
= GameObject
.Find("BroadcaseEphemerisChart").GetComponent<LineChart>();ResidualChart
= GameObject
.Find("ResidualChart").GetComponent<LineChart>();PrecisionEphemerisChart
.gameObject
.SetActive(false);BroadcaseEphemerisChart
.gameObject
.SetActive(false);ResidualChart
.gameObject
.SetActive(false);SateliteID
= GameObject
.Find("SatelliteID").GetComponent<Dropdown>();Btn_BroadcaseImg
= GameObject
.Find("廣播星歷圖像").GetComponent<Button>();Btn_PrecisionImg
= GameObject
.Find("精密星歷圖像").GetComponent<Button>();Btn_ResidualImg
= GameObject
.Find("殘差圖").GetComponent<Button>();Btn_BroadcaseImg
.interactable
= false;Btn_PrecisionImg
.interactable
= false;Btn_ResidualImg
.interactable
= false;}public static void LogInfo(string info
){m_text
.text
= info
;}
}
總結
以上是生活随笔為你收集整理的Unity3D 广播星历与精密星历的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。