国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

通過反射獲取數據庫的數據將其轉化為相應類型的數據

2019-11-14 13:31:24
字體:
來源:轉載
供稿:網友

反射可以動態獲取數據的類型,Type 類可以獲取其中的 字段、方法、屬性等。 

尤其是將字段與屬性做區分可以讓我們可以獲取,自己想獲得的。廢話不多說上代碼。

先將數據導入的類,寫下:

 1 using System; 2 using UnityEngine; 3  4 namespace ARPGSimpleDemo.Skill 5 { 6     /// <summary> 7     /// 技能數據 8     /// </summary> 9     [Serializable]10     public class SkillData11     {12         /// <summary>技能擁有者</summary>13         [HideInInspector]14         public GameObject Owner;15         /// <summary>技能編號</summary>16         public int skillID{set;get;}17         /// <summary>技能圖標</summary>18         public string skillIcon { set;get;}19         /// <summary>描述</summary>20         public string description{set;get;}  21         /// <summary>技能名稱</summary>22         public string name{set;get;}23         /// <summary>持續時間</summary>24         public float durationTime{set;get;} 25         /// <summary>在持續時間內,兩次傷害之間的間隔時間</summary>26         public float damageInterval{set;get;}27         /// <summary>傷害比</summary>28         public float damage {set;get;} 29         /// <summary>冷卻時間</summary>30         public int coolTime{set;get;}31         /// <summary>冷卻剩余</summary>32         public int coolRemain;33         /// <summary>魔法消耗</summary>34         public int costSP{set;get;} 35         /// <summary>攻擊距離</summary>36         public float attackDisntance{set;get;}  37         /// <summary>攻擊目標</summary>38         [HideInInspector]39         public GameObject[] attackTargets;40         /// <summary>攻擊目標的TAG</summary>41         public string[] attckTargetTags{set;get;}42         /// <summary>技能等級</summary>43         public int level{set;get;} 44         /// <summary>技能預制對象</summary>45         public GameObject skillPRefab;46         /// <summary>預制文件名</summary>47         public string prefabName{set;get;}48         /// <summary>攻擊范圍 線形,矩形,扇形,圓形</summary>49         public DamageMode damageMode{set;get;} 50         /// <summary>攻擊類型,單攻,群攻</summary>51         public SkillAttackType  attackType{set;get;}52         /// <summary>是否激活</summary>53         public bool Activated;54         /// <summary>技能對應的動畫名稱 </summary>55         public string animtionName{set;get;}56         /// <summary> 攻擊范圍角度</summary>57         public int attackAngle{set;get;}58         /// <summary>目標受擊特效</summary>59         public string hitFxName{set;get;}60         public GameObject hitFxPrefab;61         /// <summary>下一個連擊技能編號</summary>62         public int nextBatterId{set;get;}63    64       }65 }

下面是獲取數據  并放入 

 1     /// <summary> 2     ///數據庫數據放入技能管理類中 3     /// </summary> 4     /// <param name="jobId">職業ID</param> 5     void InitSkill(int jobId) 6     { 7         //先將數據庫打開 8         OperatingDB.Instance.CreateDataBase(); 9         //遍歷表中所有行10         SqliteDataReader skill = OperatingDB.Instance.db.ReadFullTable("T_Skill" + jobId);11         while (skill.Read())12         {13             SkillData sd = new SkillData();14             //反射獲取15             Type t = typeof(SkillData);16             int i = 0;17             //遍歷SkillData所有屬性 t.GetProperties18             foreach (var item in t.GetProperties())19             {20                 i++;21                 //獲取屬性 判斷 是否為 string22                 if (item.PropertyType.Equals(typeof(string)))23                     item.SetValue(sd, skill[i].ToString(), null); //賦值24                 //獲取屬性 判斷 是否為 float25                 else if (item.PropertyType.Equals(typeof(float)))26                     item.SetValue(sd, float.Parse(skill[i].ToString()), null);27                 //獲取屬性 判斷 是否為 string[]28                 else if (item.PropertyType.Equals(typeof(string[])))29                 {30                     string[] str = skill[i].ToString().Split(',');31                     item.SetValue(sd, str, null);32                 }33                 //獲取屬性 其余 其中枚舉可以與int做轉換34                 else35                     item.SetValue(sd, int.Parse(skill[i].ToString()), null);36             }37             //獲取物體本身的技能管理類 將得到的類傳入38             GetComponent<CharacterSkillManager>().skills.Add(sd);39         }40         //關閉數據庫41         OperatingDB.Instance.db.CloseSqlConnection();42     }

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 奉新县| 都匀市| 桂阳县| 边坝县| 吉林市| 南汇区| 抚宁县| 全南县| 伊通| 建昌县| 财经| 平阴县| 富川| 马公市| 永年县| 上蔡县| 闽侯县| 成都市| 贵州省| 武冈市| 张北县| 堆龙德庆县| 固阳县| 萨迦县| 铁岭市| 闽清县| 白银市| 隆回县| 德钦县| 宣化县| 香港| 大石桥市| 宁陵县| 汤阴县| 西充县| 佳木斯市| 淮南市| 阿坝县| 铁岭市| 武汉市| 敖汉旗|