示例#1
0
        public void TestGetProperty()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                var r    = new Random(0);
                var data = "";
                for (var i = 0; i < 1024; i++)
                {
                    data += 'a' + r.Next(26);
                }

                for (int i = 0; i < 5 * 1024; i++)
                {
                    db.Set(string.Format("row{0}", i), data);
                }

                var stats = db.PropertyValue("leveldb.stats");

                Assert.NotNull(stats);
                Assert.True(stats.Contains("Compactions"));
            }
        }
示例#2
0
        public void TestIterator()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                var expected = new[] { "London", "New York", "Tampa" };

                var actual = new List<string>();
                using(var iterator = db.CreateIterator(new ReadOptions()))
                {
                    iterator.SeekToFirst();
                    while(iterator.IsValid())
                    {
                        var key = iterator.GetKey();
                        actual.Add(key);
                        iterator.Next();
                    }
                }

                Assert.Equal(expected, actual);

            }
        }
示例#3
0
        public void TestSnapshot()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Remove("New York");

                using (var snapShot = db.CreateSnapshot())
                {
                    var readOptions = new ReadOptions {
                        Snapshot = snapShot
                    };

                    db.Set("New York", "blue");

                    Assert.Equal((string)db.Get("Tampa", readOptions), "green");
                    Assert.Equal((string)db.Get("London", readOptions), "red");

                    // Snapshot taken before key was updates
                    Assert.Null(db.Get("New York", readOptions));
                }

                // can see the change now
                Assert.Equal((string)db.Get("New York"), "blue");
            }
        }
示例#4
0
        public void TestIterator()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                var expected = new[] { "London", "New York", "Tampa" };

                var actual = new List <string>();
                using (var iterator = db.CreateIterator(new ReadOptions()))
                {
                    iterator.SeekToFirst();
                    while (iterator.IsValid())
                    {
                        var key = iterator.GetKey();
                        actual.Add(key);
                        iterator.Next();
                    }
                }

                Assert.Equal(expected, actual);
            }
        }
示例#5
0
        public void TestWriteBatch()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("NA", "Na");

                using (var batch = new WriteBatch())
                {
                    batch.Remove("NA")
                    .Set("Tampa", "Green")
                    .Set("London", "red")
                    .Set("New York", "blue");
                    db.Write(batch);
                }

                var expected = new[] { "London", "New York", "Tampa" };
                var actual   = from kv in db
                               select(string) kv.Key;

                Assert.Equal(expected, actual.ToArray());
            }
        }
示例#6
0
 /// <summary>
 /// set value
 /// </summary>
 /// <param name="key"></param>
 public static void Remove(string key)
 {
     CheckPath();
     using (var db = new LDB(path))
     {
         db.Remove(key);
     }
 }
示例#7
0
 /// <summary>
 /// exist value
 /// </summary>
 /// <param name="key"></param>
 public static bool Exists(string key)
 {
     CheckPath();
     using (var db = new LDB(path))
     {
         return(db.Get(key) != null);
     }
 }
示例#8
0
 /// <summary>
 /// set value
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 public static void Set(string key, string value)
 {
     CheckPath();
     using (var db = new LDB(path))
     {
         db.Set(key, value);
     }
 }
示例#9
0
 /// <summary>
 /// get value
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 public static string Get(string key)
 {
     CheckPath();
     using (var db = new LDB(path))
     {
         return(db.Get(key));
     }
 }
示例#10
0
 /// <summary>
 /// set value
 /// </summary>
 /// <param name="key"></param>
 /// <param name="value"></param>
 public static void Set <T>(string key, T value)
 {
     CheckPath();
     using (var db = new LDB(path))
     {
         db.Set(key, value.ToByte());
     }
 }
示例#11
0
文件: DBTests.cs 项目: ted-feng/Aoite
 public DBTests()
 {
     var tempPath = Path.GetTempPath();
     var randName = Path.GetRandomFileName();
     DatabasePath = Path.Combine(tempPath, randName);
     var options = new Options()
     {
         CreateIfMissing = true
     };
     Database = new LDB(DatabasePath, options);
 }
示例#12
0
 public void Intro()
 {
     using(var database = new LDB(DatabasePath, new Options() { CreateIfMissing = true }))
     {
         database.Set("key1", "value1");
         Assert.Equal("value1", (string)database.Get("key1"));
         Assert.True(database.Get("key1") != null);
         database.Remove("key1");
         Assert.False(database.Get("key1") != null);
         Assert.Null(database.Get("key1"));
     }
 }
示例#13
0
文件: DBTests.cs 项目: ted-feng/Aoite
 public void Error()
 {
     Assert.Throws<LevelDBException>(() =>
     {
         var options = new Options()
         {
             CreateIfMissing = false
         };
         var db = new LDB("non-existent", options);
         Assert.True(false);
         db.Get("key1");
     });
 }
示例#14
0
        public void TestOpen()
        {
            var path = CleanTestDB();
            Assert.Throws<LevelDBException>(() =>
            {
                using(var db = new LDB(path, new Options { CreateIfMissing = true }))
                {
                }

                using(var db = new LDB(path, new Options { ErrorIfExists = true }))
                {
                }
            });
        }
示例#15
0
 public void Intro()
 {
     using (var database = new LDB(DatabasePath, new Options()
     {
         CreateIfMissing = true
     }))
     {
         database.Put("key1", "value1");
         Assert.Equal("value1", (string)database.Get("key1"));
         Assert.True(database.Get("key1") != null);
         database.Delete("key1");
         Assert.False(database.Get("key1") != null);
         Assert.Null(database.Get("key1"));
     }
 }
示例#16
0
        /// <summary>
        /// get value
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        public static T Get <T>(string key) where T : class, new()
        {
            CheckPath();
            using (var db = new LDB(path))
            {
                var item = db.Get(key);

                if (item == null)
                {
                    return(new T());
                }
                else
                {
                    return(db.Get(key).ByteArray.ToModel <T>() ?? new T());
                }
            }
        }
示例#17
0
        public void TestOpen()
        {
            var path = CleanTestDB();

            Assert.Throws <LevelDBException>(() =>
            {
                using (var db = new LDB(path, new Options {
                    CreateIfMissing = true
                }))
                {
                }

                using (var db = new LDB(path, new Options {
                    ErrorIfExists = true
                }))
                {
                }
            });
        }
示例#18
0
        public void TestEnumerable()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                var expected = new[] { "London", "New York", "Tampa" };
                var actual   = from kv in db
                               select(string) kv.Key;

                Assert.Equal(expected, actual.ToArray());
            }
        }
示例#19
0
        public void ComparatorTest()
        {
            using (var database = new LDB(DatabasePath, new Options()
            {
                CreateIfMissing = true
            }))
            {
                for (int i = 0; i < 20; i++)
                {
                    database.Put("AA:" + i, "valueA" + i);
                    database.Put("BB:" + i, "valueB" + i);
                    database.Put("CC:" + i, "valueC" + i);
                    database.Put("BBX:" + i, "valueBX" + i);
                }
            }

            using (var database = new LDB(DatabasePath, new Options()))
            {
                using (var iter = database.CreateIterator())
                {
                    int testCount = 0;
                    iter.Seek("BB:");
                    while (iter.IsValid())
                    {
                        string key = iter.GetKey();
                        if (!key.StartsWith("BB:"))
                        {
                            break;
                        }

                        string value = iter.GetValue();
                        testCount++;
                        Console.WriteLine("{0} -> {1}", key, value);

                        iter.Next();
                    }

                    Assert.Equal(20, testCount);
                }
            }
        }
示例#20
0
        public void TestCRUD()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                Assert.Equal((string)db.Get("Tampa"), "green");
                Assert.Equal((string)db.Get("London"), "red");
                Assert.Equal((string)db.Get("New York"), "blue");

                db.Remove("New York");

                Assert.Null(db.Get("New York"));

                db.Remove("New York");
            }
        }
示例#21
0
        public void TestCRUD()
        {
            var path = CleanTestDB();

            using (var db = new LDB(path, new Options {
                CreateIfMissing = true
            }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                Assert.Equal((string)db.Get("Tampa"), "green");
                Assert.Equal((string)db.Get("London"), "red");
                Assert.Equal((string)db.Get("New York"), "blue");

                db.Remove("New York");

                Assert.Null(db.Get("New York"));

                db.Remove("New York");
            }
        }
示例#22
0
        public void ComparatorTest()
        {
            using(var database = new LDB(DatabasePath, new Options() { CreateIfMissing = true }))
            {
                for(int i = 0; i < 20; i++)
                {
                    database.Set("AA:" + i, "valueA" + i);
                    database.Set("BB:" + i, "valueB" + i);
                    database.Set("CC:" + i, "valueC" + i);
                    database.Set("BBX:" + i, "valueBX" + i);
                }
            }

            using(var database = new LDB(DatabasePath, new Options()))
            {
                using(var iter = database.CreateIterator())
                {
                    int testCount = 0;
                    iter.Seek("BB:");
                    while(iter.IsValid())
                    {
                        string key = iter.GetKey();
                        if(!key.StartsWith("BB:")) break;

                        string value = iter.GetValue();
                        testCount++;
                        Console.WriteLine("{0} -> {1}", key, value);

                        iter.Next();
                    }

                    Assert.Equal(20, testCount);
                }
            }

        }
示例#23
0
        public void TestSnapshot()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Remove("New York");

                using(var snapShot = db.CreateSnapshot())
                {
                    var readOptions = new ReadOptions { Snapshot = snapShot };

                    db.Set("New York", "blue");

                    Assert.Equal((string)db.Get("Tampa", readOptions), "green");
                    Assert.Equal((string)db.Get("London", readOptions), "red");

                    // Snapshot taken before key was updates
                    Assert.Null(db.Get("New York", readOptions));
                }

                // can see the change now
                Assert.Equal((string)db.Get("New York"), "blue");

            }
        }
示例#24
0
        public void TestGetProperty()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                var r = new Random(0);
                var data = "";
                for(var i = 0; i < 1024; i++)
                {
                    data += 'a' + r.Next(26);
                }

                for(int i = 0; i < 5 * 1024; i++)
                {
                    db.Set(string.Format("row{0}", i), data);
                }

                var stats = db.PropertyValue("leveldb.stats");

                Assert.NotNull(stats);
                Assert.True(stats.Contains("Compactions"));
            }
        }
示例#25
0
        public void TestWriteBatch()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("NA", "Na");

                using(var batch = new WriteBatch())
                {
                    batch.Remove("NA")
                         .Set("Tampa", "Green")
                         .Set("London", "red")
                         .Set("New York", "blue");
                    db.Write(batch);
                }

                var expected = new[] { "London", "New York", "Tampa" };
                var actual = from kv in db
                             select (string)kv.Key;

                Assert.Equal(expected, actual.ToArray());
            }
        }
示例#26
0
文件: DBTests.cs 项目: ted-feng/Aoite
        public void Cache()
        {
            Database.Dispose();

            // open the DB with a cache that is not owned by LevelDB, then
            // close DB and then free the cache
            var options = new Options()
            {
                CacheSize = 64
            };
            Database = new LDB(DatabasePath, options);
            options = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
            Database.Set("key1", "value1");
            Database.Dispose();
            Database = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();
        }
示例#27
0
 public void TestRepair()
 {
     TestCRUD();
     LDB.Repair(DatabasePath, new Options());
 }
示例#28
0
        public void TestEnumerable()
        {
            var path = CleanTestDB();

            using(var db = new LDB(path, new Options { CreateIfMissing = true }))
            {
                db.Set("Tampa", "green");
                db.Set("London", "red");
                db.Set("New York", "blue");

                var expected = new[] { "London", "New York", "Tampa" };
                var actual = from kv in db
                             select (string)kv.Key;

                Assert.Equal(expected, actual.ToArray());
            }
        }
示例#29
0
        private WeakReference _parent;  // as DB

        internal Snapshot(IntPtr handle, LDB parent)
        {
            _handle = handle;
            _parent = new WeakReference(parent);
        }
示例#30
0
        void Update()
        {
            if (dataLoadOver)
            {
                //根据按键更新showGUI
                if (Input.GetKeyDown(switchGUIKey))
                {
                    showGUI = !showGUI;
                }
                //根据showGUI更新GUI的显示
                if (showGUI && !ui_StarMapToolsBasePanel.activeSelf || !showGUI && ui_StarMapToolsBasePanel.activeSelf)
                {
                    ui_StarMapToolsBasePanel.SetActive(!ui_StarMapToolsBasePanel.activeSelf);
                }
                //核心内容
                if (showGUI)
                {
                    //判断是否处于新建游戏的状态
                    if (UIRoot.instance.galaxySelect.starmap.galaxyData != null)
                    {
                        if (SearchNext)
                        {
                            LoadResAmount.isOn = false;
                            UIRoot.instance.galaxySelect.Rerand();
                        }
                        //更新数据
                        if (galaxy != UIRoot.instance.galaxySelect.starmap.galaxyData)
                        {
                            TitleText.text = "新游戏模式";
                            galaxy         = UIRoot.instance.galaxySelect.starmap.galaxyData;
                            StarList.ClearOptions();
                            ResultList.ClearOptions();
                            foreach (StarData star in galaxy.stars)
                            {
                                StarList.options.Add(new Dropdown.OptionData(star.name));
                            }
                            StarList.value = -1;
                            StarList.RefreshShownValue();
                            if (SearchNext)
                            {
                                SearchButton.onClick.Invoke();
                            }
                        }
                    }
                    //判断是否处于游戏中
                    else if (GameMain.galaxy != null)
                    {
                        SearchNext = false;
                        //更新数据
                        if (galaxy != GameMain.galaxy)
                        {
                            TitleText.text = "读档模式";
                            galaxy         = GameMain.galaxy;
                            StarList.ClearOptions();
                            ResultList.ClearOptions();
                            foreach (StarData star in galaxy.stars)
                            {
                                StarList.options.Add(new Dropdown.OptionData(star.name));
                            }
                            StarList.value = -1;
                            StarList.RefreshShownValue();
                        }
                        //传送功能
                        if (Input.GetKeyDown(tpKey))
                        {
                            object target = galaxy.StarById(StarList.value + 1);
                            GameMain.data.ArriveStar((StarData)target);
                            if (PlanetList.value > 0)
                            {
                                target = ((StarData)target).planets[PlanetList.value - 1];
                            }
                            StartCoroutine(wait(target));
                        }
                    }
                    //等待数据加载
                    else if (TitleText.text != "等待数据")
                    {
                        TitleText.text = "等待数据";
                        StarList.ClearOptions();
                        PlanetList.ClearOptions();
                        ResultList.ClearOptions();
                        InfoText.text = "";
                        SearchNext    = false;
                    }
                    if (loadingStarData)
                    {
                        var star = galaxy.StarById(StarList.value + 1);
                        if (star.loaded || !LoadResAmount.isOn)
                        {
                            loadingStarData = false;
                        }
                        PlanetList.value = -1;
                        PlanetList.RefreshShownValue();
                    }
                }
            }
            //加载数据
            else if (UIRoot.instance.overlayCanvas.transform != null && GameMain.instance != null)
            {
                //加载UI
                ui_StarMapToolsBasePanel = GameObject.Instantiate(prefab_StarMapToolsBasePanel, UIRoot.instance.overlayCanvas.transform);
                ui_StarMapToolsBasePanel.transform.Find("TitleText").gameObject.AddComponent <Drag>();
                ui_StarMapToolsBasePanel.SetActive(false);
                //获取控件
                TitleText        = ui_StarMapToolsBasePanel.transform.Find("TitleText").GetComponent <Text>();
                StarList         = ui_StarMapToolsBasePanel.transform.Find("StarList").GetComponent <Dropdown>();
                PlanetList       = ui_StarMapToolsBasePanel.transform.Find("PlanetList").GetComponent <Dropdown>();
                InfoText         = ui_StarMapToolsBasePanel.transform.Find("InfoText").GetComponent <InputField>();
                LoadResAmount    = ui_StarMapToolsBasePanel.transform.Find("LoadResAmount").GetComponent <Toggle>();
                OptionsList      = ui_StarMapToolsBasePanel.transform.Find("OptionsList").GetComponent <ScrollRect>();
                SearchNextToggle = ui_StarMapToolsBasePanel.transform.Find("SearchNextToggle").GetComponent <Toggle>();
                DysonLuminoText  = ui_StarMapToolsBasePanel.transform.Find("DysonLuminoText").GetComponent <InputField>();
                DistanceText     = ui_StarMapToolsBasePanel.transform.Find("DistanceText").GetComponent <InputField>();
                ResultList       = ui_StarMapToolsBasePanel.transform.Find("ResultList").GetComponent <Dropdown>();
                SearchButton     = ui_StarMapToolsBasePanel.transform.Find("SearchButton").GetComponent <Button>();
                var TempToggle = OptionsList.content.Find("TempToggle").GetComponent <Toggle>();
                //获取数据
                var TempStarTypes        = starSearcher.AllStarTypes;
                var TempPlanteTypes      = starSearcher.AllPlanteTypes;
                var TempSingularityTypes = starSearcher.AllSingularityTypes;
                var TempVeinTypes        = starSearcher.AllVeinTypes;
                //各种选项的列表
                var StarTypesToggleList        = new List <Toggle>();
                var PlanteTypesToggleList      = new List <Toggle>();
                var SingularityTypesToggleList = new List <Toggle>();
                var VeinTypesToggleList        = new List <Toggle>();
                //实例化
                for (int i = 0; i < TempStarTypes.Count; i++)
                {
                    var toggle = GameObject.Instantiate <Toggle>(TempToggle, TempToggle.transform.parent).GetComponent <RectTransform>();
                    toggle.Find("Label").GetComponent <Text>().text = TempStarTypes[i];
                    toggle.GetComponent <Toggle>().isOn             = true;
                    toggle.anchorMax = new Vector2((float)0.25, (float)(1 - i * 0.1));
                    toggle.anchorMin = new Vector2(0, (float)(1 - (i + 1) * 0.1));
                    toggle.gameObject.SetActive(true);
                    StarTypesToggleList.Add(toggle.GetComponent <Toggle>());
                }
                for (int i = 0; i < TempPlanteTypes.Count; i++)
                {
                    var toggle = GameObject.Instantiate <Toggle>(TempToggle, TempToggle.transform.parent).GetComponent <RectTransform>();
                    toggle.Find("Label").GetComponent <Text>().text = TempPlanteTypes[i];
                    toggle.anchorMax = new Vector2((float)0.5, (float)(1 - i * 0.1));
                    toggle.anchorMin = new Vector2((float)0.25, (float)(1 - (i + 1) * 0.1));
                    toggle.gameObject.SetActive(true);
                    PlanteTypesToggleList.Add(toggle.GetComponent <Toggle>());
                }
                for (int i = 0; i < TempSingularityTypes.Count; i++)
                {
                    var toggle = GameObject.Instantiate <Toggle>(TempToggle, TempToggle.transform.parent).GetComponent <RectTransform>();
                    toggle.Find("Label").GetComponent <Text>().text = TempSingularityTypes[i];
                    toggle.anchorMax = new Vector2((float)0.75, (float)(1 - i * 0.1));
                    toggle.anchorMin = new Vector2((float)0.5, (float)(1 - (i + 1) * 0.1));
                    toggle.gameObject.SetActive(true);
                    SingularityTypesToggleList.Add(toggle.GetComponent <Toggle>());
                }
                for (int i = 0; i < TempVeinTypes.Count; i++)
                {
                    var toggle = GameObject.Instantiate <Toggle>(TempToggle, TempToggle.transform.parent).GetComponent <RectTransform>();
                    toggle.Find("Label").GetComponent <Text>().text = TempVeinTypes[i];
                    toggle.anchorMax = new Vector2(1, (float)(1 - i * 0.1));
                    toggle.anchorMin = new Vector2((float)0.75, (float)(1 - (i + 1) * 0.1));
                    toggle.gameObject.SetActive(true);
                    VeinTypesToggleList.Add(toggle.GetComponent <Toggle>());
                }
                //切换恒星事件
                StarList.onValueChanged.AddListener(delegate {
                    PlanetList.ClearOptions();
                    if (StarList.value >= 0 && StarList.value < galaxy.starCount)
                    {
                        var star = galaxy.StarById(StarList.value + 1);
                        if (LoadResAmount.isOn && UIRoot.instance.galaxySelect.starmap.galaxyData != null && !star.loaded)
                        {
                            star.Load();
                        }
                        PlanetList.options.Add(new Dropdown.OptionData("恒星"));
                        foreach (PlanetData planet in star.planets)
                        {
                            PlanetList.options.Add(new Dropdown.OptionData(planet.name));
                        }
                        PlanetList.value = -1;
                        PlanetList.RefreshShownValue();
                    }
                });
                //切换星球事件
                PlanetList.onValueChanged.AddListener(delegate {
                    var star = galaxy.StarById(StarList.value + 1);
                    if (PlanetList.value > 0 && PlanetList.value <= star.planetCount)
                    {
                        var planet       = star.planets[PlanetList.value - 1];
                        var info         = planet.name + "的信息:\n";
                        info            += "词条:" + planet.singularityString + "\n";//词条
                        info            += "类型:" + planet.typeString + "\n";
                        string waterType = "未知";
                        switch (planet.waterItemId)
                        {
                        case -1:
                            waterType = "熔岩";
                            break;

                        case 0:
                            waterType = "无";
                            break;

                        default:
                            waterType = LDB.ItemName(planet.waterItemId);
                            break;
                        }
                        info += "海洋类型:" + waterType + "\n";
                        if (planet.type != EPlanetType.Gas && planet.veinSpotsSketch != null)
                        {
                            info += "矿物信息:" + "\n";
                            for (int i = 0; i < LDB.veins.Length; i++)
                            {
                                var name      = LDB.veins.dataArray[i].name;
                                object amount = planet.veinAmounts[i + 1];
                                if (planet.veinSpotsSketch[i + 1] == 0)
                                {
                                    amount = "无";
                                }
                                else if ((long)amount == 0)
                                {
                                    if (!LoadResAmount.isOn)
                                    {
                                        amount = "有";
                                    }
                                    else if (UIRoot.instance.galaxySelect.starmap.galaxyData != null)
                                    {
                                        amount          = "正在加载";
                                        loadingStarData = true;
                                    }
                                    else
                                    {
                                        amount = "未加载,靠近后显示";
                                    }
                                }
                                else if (i + 1 == 7)
                                {
                                    amount = (long)amount * (double)VeinData.oilSpeedMultiplier + " /s";
                                }
                                info += "    " + name + ":" + amount + "\n";
                            }
                        }
                        InfoText.text = info;
                    }
                    else if (PlanetList.value == 0)
                    {
                        var info = star.name + "星系的信息:" + (loadingStarData?"正在加载":"") + "\n";
                        info    += "恒星类型:" + star.typeString + "\n";
                        info    += "星球数量:" + star.planetCount + "\n";
                        info    += "光度:" + star.dysonLumino.ToString() + "\n";
                        info    += "距离初始星系恒星:" + ((star.uPosition - galaxy.StarById(1).uPosition).magnitude / 2400000.0).ToString() + "光年\n";
                        info    += "星球列表:";
                        foreach (PlanetData planet in star.planets)
                        {
                            info += "-" + planet.typeString + "  " + planet.singularityString;
                        }
                        info += "\n矿物信息:" + "\n";
                        for (int i = 0; i < LDB.veins.Length; i++)
                        {
                            var name      = LDB.veins.dataArray[i].name;
                            object amount = star.GetResourceAmount(i + 1);
                            if (star.GetResourceSpots(i + 1) == 0)
                            {
                                amount = "无";
                            }
                            else if ((long)amount == 0)
                            {
                                if (!LoadResAmount.isOn)
                                {
                                    amount = "有";
                                }
                                else if (UIRoot.instance.galaxySelect.starmap.galaxyData != null)
                                {
                                    amount          = "正在加载";
                                    loadingStarData = true;
                                }
                                else
                                {
                                    amount = "未加载,靠近后显示";
                                }
                            }
                            else if (i + 1 == 7)
                            {
                                amount = (long)amount * (double)VeinData.oilSpeedMultiplier + " /s";
                            }
                            info += "    " + name + ":" + amount + "\n";
                        }
                        InfoText.text = info;
                    }
                });
                //搜索事件
                SearchButton.onClick.AddListener(delegate {
                    SearchNext = false;
                    starSearcher.galaxyData = galaxy;
                    starSearcher.Clear();
                    float.TryParse(DysonLuminoText.text == "" ? "0":DysonLuminoText.text, out starSearcher.dysonLumino);
                    float.TryParse(DistanceText.text == ""?"1000": DistanceText.text, out starSearcher.distance);
                    foreach (Toggle toggle in StarTypesToggleList)
                    {
                        if (toggle.isOn)
                        {
                            var typeString = toggle.transform.Find("Label").GetComponent <Text>().text;
                            starSearcher.StarTypes.Add(typeString);
                        }
                    }
                    foreach (Toggle toggle in PlanteTypesToggleList)
                    {
                        if (toggle.isOn)
                        {
                            var typeString = toggle.transform.Find("Label").GetComponent <Text>().text;
                            starSearcher.PlanteTypes.Add(typeString);
                        }
                    }
                    foreach (Toggle toggle in SingularityTypesToggleList)
                    {
                        if (toggle.isOn)
                        {
                            var typeString = toggle.transform.Find("Label").GetComponent <Text>().text;
                            starSearcher.SingularityTypes.Add(typeString);
                        }
                    }
                    foreach (Toggle toggle in VeinTypesToggleList)
                    {
                        if (toggle.isOn)
                        {
                            var typeString = toggle.transform.Find("Label").GetComponent <Text>().text;
                            starSearcher.VeinTypes.Add(typeString);
                        }
                    }
                    SerachResult = starSearcher.Search();
                    ResultList.ClearOptions();
                    foreach (StarData star in SerachResult)
                    {
                        ResultList.options.Add(new Dropdown.OptionData(star.name));
                    }
                    ResultList.value = -1;
                    ResultList.RefreshShownValue();
                    if (SerachResult.Count == 0 && SearchNextToggle.isOn)
                    {
                        SearchNext = true;
                    }
                });
                //切换搜索结果事件
                ResultList.onValueChanged.AddListener(delegate {
                    StarList.value = SerachResult[ResultList.value].index;
                    StarList.RefreshShownValue();
                });
                dataLoadOver = true;
            }
        }