1. 程式人生 > >unity3d C#之配置檔案的載入

unity3d C#之配置檔案的載入

一,放置配置檔案位置一般放在  StreamingAssets下面


我的TowManager.TxT檔案裡面寫的是

[Tow_Crystal]
#attack=10
#attackDistance=15
#attackInterval=1.5
#weaponName=Test


[Tow_Gatling]
#attack=15
#attackDistance=10
#attackInterval=4
#weaponName=Test


[Tow_Cannon]
#attack=20
#attackDistance=8
#attackInterval=1
#weaponName=Test

具體程式碼

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;

public class Config : MonoBehaviour
{
    //把towDic字典中的內容讀取到專案中
    //                    主鍵                子鍵     子值
 public  static Dictionary<string, Dictionary<string, string>> towDic =
        new Dictionary<string, Dictionary<string, string>>();
    //按照Dictionary的寫法一步一步的寫
	// Use this for initialization
 public string path = "TowManager.txt";
//配置檔案要放在Awake裡面,因為要在專案執行中要保證資料要先有
 void Awake()
 {
 	//把新建的配置檔案  TowManager.txt檔案放到StreamingAssets目錄下,之後用Combine合併路徑
     path = Path.Combine(Application.streamingAssetsPath, path);
     //用於讀取配置資訊到數組裡面
     string[] items = File.ReadAllLines(path);

     //主鍵
     string mainKey = null;
     //子鍵
     string subKey = null;
     //子值
     string subValue = null;
     foreach (var item in items)
     {
     	//判斷讀取到的行是否為空
         if (!string.IsNullOrEmpty(item))
         {
                  item.Trim();
                 //如果該字元開始是"["     
                 if (item.StartsWith("["))
                 {
                     //去除不用的字元將其作為字典的主鍵
                     mainKey = item.Substring(1,
                         item.Length - 2).Trim();
                     towDic.Add(mainKey, new Dictionary<string, string>());
                    print("主鍵為:" + mainKey);
                     //如果開始的符號是#
                   
                  }
                 //如果該字串是以“#”開始
                 if (item.StartsWith("#"))
                 {
                     //用=號分割    去除不用的符號  分別賦值給子鍵和子值
                     string[] main = item.Split('=');
                     subKey = (main[0].Substring(1, main[0].Length-1)).Trim();
                     subValue = main[1].Trim();
                     //給主鍵新增子建和子值
                     towDic[mainKey].Add(subKey, subValue);
                     print("子鍵為:" + subKey + "    子值為:" + subValue);
                 }
             }
         }
        
     //測試輸出是否正確
     print(towDic["Tow_Crystal"]["attack"]);
 }
}

讀取配置檔案

例項:給你的遊戲物體配置相關的值

public abstract class TowState : MonoBehaviour {
    //攻擊力
    //    [HideInInspector]
    public float attack;
    //攻擊距離
    //    [HideInInspector]
    public float attackDistance;
    //攻擊間隔
    public float attackInterval;

    public void Start()
    {
        //主鍵
        //由於我建立的遊戲物體是 Instantiate()例項化出來的因此在獲取  主鍵  要去掉 (Clone)這幾個字元(transform.parent.parent.name.Length-7),才能保證主鍵的一致
        //注意:在遊戲場景中不能有這個物體,不然由於場景中的 遊戲物體的名稱 就是字典中的主鍵,會報 主鍵錯誤(沒有匹配到)
        string MainKey=transform.parent.parent.name.Substring(0,transform.parent.parent.name.Length-7);
        //通過測試 通過剪下遊戲名來判斷是否與主鍵一致 
        print(MainKey); 
        //獲得通過子建的key,獲取相應的子值--其中(GameMessager.Instance是一個單例) 
        //由於通過字典得到的值是String型別的,轉換為float型別
        attack=float.Parse(GameMessager.instance.configFile[MainKey]["attack"]); 
        attackDistance = float.Parse(GameMessager.instance.configFile[MainKey]["attackDistance"]); 
        attackInterval = float.Parse(GameMessager.instance.configFile[MainKey]["attackInterval"]); 
        attackTypechange = GameMessager.instance.configFile[MainKey]["attackType"]; 
    }
}
注意:如有錯誤,請檢視你建立的角色名是否和配置檔案中的角色名一致,檢視你的角色名通過剪下後是否和字典中相應的主鍵一致,其他就沒有問題了,

相關推薦

unity3d C#配置檔案載入

一,放置配置檔案位置一般放在  StreamingAssets下面 我的TowManager.TxT檔案裡面寫的是 [Tow_Crystal] #attack=10 #attackDistance=15 #attackInterval=1.5 #weaponName=Te

【一起學原始碼-微服務】Nexflix Eureka 原始碼二:EurekaServer啟動配置檔案載入以及面向介面的配置項讀取

前言 上篇文章已經介紹了 為何要讀netflix eureka原始碼了,這裡就不再概述,下面開始正式原始碼解讀的內容。 如若轉載 請標明來源:一枝花算不算浪漫 程式碼總覽 還記得上文中,我們通過web.xml找到了eureka server入口的類EurekaBootStrap,這裡我們就先來簡單地看下: /

Struts2配置檔案載入的順序

掌握: 載入的配置檔案的名稱,位置和作用 Struts2框架的核心是StrutsPrepareAndException過濾器,該過濾器有兩個功能 Prepare-----預處理,載入核心的配置檔案 Execute--

Unity3D-動態讀取配置檔案載入遊戲物件

private Dictionary<int,T> LoadConfig<T>(string fileName) where T : class,new() {

Nginx入門筆記————配置檔案結構

Nginx入門筆記之————配置檔案結構   ... #全域性塊 events { #events塊 ... } http #http塊 { ... #http全域性塊 server #

C++讀取配置檔案.txt連線資料庫

mysql=mysql_init((MYSQL*)0); ifstream file; string path="D:/data.txt"; file.open(path.c_str()); string port1; string url; string name; str

Struts2的入門配置檔案和傳值問題

struts-base.xml檔案詳解這是struts2的基礎配置檔案必須的 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD

asp.netcore 深入瞭解配置檔案載入過程

前言     配置檔案中程式執行中,擔當著不可或缺的角色;通常情況下,使用 visual studio 進行建立專案過程中,專案配置檔案會自動生成在專案根目錄下,如 appsettings.json,或者是被大家廣泛使用的 appsettings.{env.EnvironmentName}.json;配置檔

Hibernate的入門配置檔案和增刪改查

首先使用maven匯入jar包,然後配置主xml檔案 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Confi

winform C#根據配置檔案啟動不同的窗體

Visual Studio中,新建winform C#專案後,會預設生成一個主窗體檔案,一般叫 Form1, 也可以自己改名,反正啟動程式就會首先啟動這個窗體。 這是一種固定的模式,那麼如果專案中有多個不同的窗體,不同情況下分別啟動不同的窗體,如何實現呢? 第一反應是把主窗體隱藏(Hide)

Golang 專案配置檔案

相信對於很多gopher 而言, 我這篇文章,算比較初級,我是一個一年多經驗的golang程式設計師,有著5年左右的程式設計經驗。 golang 對於初學者還算友好, 寫程式碼很好入門, 但業界對於golang工程與專案的BP卻比較缺少,或者是有很多方為此爭論不休,就比依賴管理工具就搞出了許多個,如 知名的有

C# 用配置檔案連線資料庫(Winform和Webform)

Winform中用配置檔案連線資料庫 資料庫連線類YSqlHelper程式碼: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Syst

SpringBoot——配置檔案載入位置

SpringBoot啟動會掃描以下位置的application.properties或者spplication.yml檔案作為springboot的預設配置檔案。 高 -file:./config/ | -file:./ | -classpath:

Scrapy 配置檔案 setting.py

1.爬蟲是否遵守 robots 協議:預設是遵守的;不遵守把第二行註釋刪掉即可 # Obey robots.txt rules # ROBOTSTXT_OBEY = False   2.爬蟲是否讓瀏覽器識別我們的 cookie:預設是識別;不想讓瀏覽器識別,是一種反反爬策略,第

mybatis原始碼-解析配置檔案(三)配置檔案Configuration解析(超詳細, 值得收藏)

1. 簡介 1.1 系列內容 本系列文章講解的是mybatis解析配置檔案內部的邏輯, 即 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFact

Spring Cloud與微服務配置檔案中心Spring Cloud Config

文章目錄 Spring Cloud Config簡介 Git上的配置檔案springcloud-config-resources springcloud-config-resources專案結構 springcloud-config-r

mybatis原始碼-解析配置檔案(四)配置檔案Mapper解析

其中, mappers作為configuration節點的一部分配置, 在本文章中, 我們講解解析mappers節點, 即 xxxMapper.xml 檔案的解析。 1 解析入口 在解析 mybatis-config.xml 時, 會進行解析 xxxMapper.xml 的檔案。 在圖示流程的 XMLCo

mybatis原始碼-解析配置檔案(四-1)配置檔案Mapper解析(cache)

1. 簡介 本文章主要講解的是, xxxMapper.xml 檔案中, cache 節點的原始碼。 2. 解析 XMLMapperBuilder.cacheElement() 方法主要負責解析 <cache> private void cacheElement(XNode context)

Nginx基礎配置檔案nginx.conf

基礎階段回顧: Nginx基礎之簡介與快速安裝 Nginx基礎之安裝目錄和配置語法詳解 nginx預設的配置檔案有: nginx.conf/default.conf 主配置檔案nginx.conf nginx.conf原檔案: nginx的預設配置語法

統計系列配置檔案的解析

運用讀取資料庫的配置檔案為例子: 1.首先來看一下配置檔案的格式: [rds_mysql] ip=localhost port=3306 db=test1,test2 user=root passwd=123456 enable=1 2.利用configparser