コード例 #1
0
        private void InitItemList()
        {
            GameObject itemObj;

            foreach (var id in itemIdList)
            {
                var itemInfo = CsvMgr.GetData <ItemData>(id);
                itemObj = ResourceMgr.InstantiateGameObject(UiName.Image_ItemBk, this.itemList);
                Assert.IsTrue(itemObj);


                var avator = itemObj.transform.Find("Image_ItemAvator");
                if (avator == null)
                {
                    throw new Exception("avator is null");
                }
                var image = avator.GetComponent <Image>();
                if (image == null)
                {
                    throw new Exception("Image is null");
                }
                image.sprite =
                    ResourceMgr.GetAsset <Sprite>(itemInfo.spriteName);
                itemObj.transform.Find("Tmp_Price").GetComponent <TextMeshProUGUI>().text = itemInfo.price.ToString();

                this.items.Add(itemObj);
            }
        }
コード例 #2
0
        protected override void UseItemData()
        {
            icon.sprite = ResourceMgr.GetAsset <Sprite>(
                ItemData.spriteName
                );

            dragger  = transform.GetOrAddComponent <Dragger>();
            selfRect = transform.GetComponent <RectTransform>();
        }
コード例 #3
0
 private void OnEnable()
 {
     upgrader.SetActive(NetInfo.isGuest);
     unickEditor.text = NetInfo.unick;
     this.uface       = NetInfo.uface;
     this.usex        = NetInfo.usex;
     print("this.usex: " + this.usex);
     avatorImag.sprite = ResourceMgr.GetAsset <Sprite>("Avator_" + this.uface);
     womanToggle.isOn  = this.usex == 1;
 }
コード例 #4
0
 partial void OnLoad()
 {
     //do any thing you want
     map                 = GetComponent <RectTransform>("MapBg/Map");
     mapController       = map.GetComponent <MapController>();
     mapRawImage         = map.GetComponent <RawImage>();
     mapRawImage.texture =
         ResourceMgr.GetAsset <Texture2D>(
             $"Map_{SceneManager.GetActiveScene().name}");
     mapController.SetSize();
 }
コード例 #5
0
        public void Refresh(string itemId, int count = 1, Action <string> ondelete = null)
        {
            this.onDelete = ondelete;

            itemData = CsvMgr.GetData <ItemData>(itemId);

            icon.sprite = ResourceMgr.GetAsset <Sprite>(
                itemData.spriteName
                );

            countText.text = count.ToString();
        }
コード例 #6
0
        private void OnPlayerEnterRoom(PlayerEnterRoom msg)
        {
            var obj       = ResourceMgr.InstantiateGameObject(UiName.PlayerInfo, scrollRect.content);
            var icon      = obj.transform.Find("Icon").GetComponent <Image>();
            var nickText  = obj.transform.Find("NickText").GetComponent <Text>();
            var levelText = obj.transform.Find("LevelText").GetComponent <Text>();

            icon.sprite    = ResourceMgr.GetAsset <Sprite>("Avator_" + msg.uface);
            nickText.text  = msg.unick;
            levelText.text = "Lv " + msg.usex;

            this.scrollRect.content.sizeDelta = new Vector2(0,
                                                            this.scrollRect.content.childCount * 91);
        }
コード例 #7
0
        /// <summary>
        /// 播放指定名字的背景音乐
        /// </summary>
        /// <param CharacterName="name"></param>
        public void PlayBgm(string audioName, string bundleKey = null)
        {
            if (!enableBgmAudio)
            {
                return;
            }

            var clip = ResourceMgr.GetAsset <AudioClip>(audioName, bundleKey ?? OriginBundleKey.Audio);

            if (clip == null)
            {
                Debug.Log("音效获取失败:" + name);
                return;
            }

            BgmAudioSource.clip   = clip;
            BgmAudioSource.loop   = true;
            BgmAudioSource.volume = 1;
            BgmAudioSource.Play();
        }
コード例 #8
0
        /// <summary>
        /// 播放指定名字音效
        /// </summary>
        /// <param CharacterName="name"></param>
        public void PlayEffect(string audioName, string bundleKey = null)
        {
            if (!enableEffectAudio)
            {
                return;
            }

            var clip = ResourceMgr.GetAsset <AudioClip>(audioName, bundleKey ?? OriginBundleKey.Audio);

            if (clip == null)
            {
                Debug.Log("音效获取失败:" + name);
                return;
            }

            var audioSource = GetAudioSource();

            audioSource.clip = clip;
            audioSource.loop = false;
            audioSource.Play();
        }
コード例 #9
0
 /// <summary>
 /// 在指定位置播放音效
 /// </summary>
 /// <param CharacterName="audioName"></param>
 /// <param CharacterName="position"></param>
 public void PlayEffect(string audioPath, Vector3 position, string bundleKey = null)
 {
     AudioSource.PlayClipAtPoint(ResourceMgr.GetAsset <AudioClip>(audioPath,
                                                                  bundleKey ?? OriginBundleKey.Audio), position);
 }
コード例 #10
0
 private void OnSyncAuthInfo()
 {
     unick.text   = NetInfo.unick;
     uface.sprite = ResourceMgr.GetAsset <Sprite>("Avator_" + NetInfo.uface);
 }
コード例 #11
0
 public void OnIconChanged(int index)
 {
     this.uface        = index;
     avatorImag.sprite = ResourceMgr.GetAsset <Sprite>("Avator_" + this.uface);
     OnClickMask();
 }
コード例 #12
0
        private void DropItems(string itemId)
        {
            var dropData = CsvMgr.GetData <DropData>(itemId);

            Assert.IsNotNull(dropData);

            //赚钱和经验
            CEventCenter.BroadMessage(Message.M_PlayerExpChange, dropData.reiki * GameSettings.Instance.reikiScale);
            CEventCenter.BroadMessage(Message.M_MoneyChange, dropData.money * GameSettings.Instance.moneyScale);

//			Debug.Log($"掉落经验:【{dropData.reiki}】*[{GameSettings.Instance.reikiScale}]");
            //掉落物品
            ItemData itemData = null;

            #region 获取itemData

            var allRate = dropData.drag_1 + dropData.drag_2 + dropData.stone_1 + dropData.stone_2;
            var rates   = new[]
            {
                dropData.drag_1 / allRate,
                (dropData.drag_1 + dropData.drag_2) / allRate,
                (dropData.drag_1 + dropData.drag_2 + dropData.stone_1) / allRate,
                (dropData.drag_1 + dropData.drag_2 + dropData.stone_1 + dropData.stone_2) / allRate,
            };
            var randomRate = Random.Range(0, 1f);
            if (randomRate > rates[3])
            {
                throw new Exception("异常概率:" + randomRate);
            }
            else if (randomRate > rates[2])
            {
                itemData = CsvMgr.GetRandomData <GemData>(FileName.GemData_2);
            }
            else if (randomRate > rates[1])
            {
                itemData = CsvMgr.GetRandomData <GemData>(FileName.GemData_1);
            }
            else if (randomRate > rates[0])
            {
                itemData = CsvMgr.GetRandomData <DragData>(FileName.DragData_2);
            }
            else
            {
                itemData = CsvMgr.GetRandomData <DragData>(FileName.DragData_1);
            }

            Assert.IsNotNull(itemData);
            #endregion

            #region 实力化Item

            var obj = ResourceMgr.InstantiateGameObject(PrefabName.DropItem, this.position);

            Assert.IsTrue(obj);

            obj.GetComponent <SpriteRenderer>().sprite =
                ResourceMgr.GetAsset <Sprite>(itemData.spriteName);

            #endregion

            #region 给Item添加捡起得逻辑

            var mover = obj.GetComponent <IMover2D>();
            Assert.IsNotNull(mover);
            mover.eventOnTriggerEnter +=
                col =>
            {
                if (col.gameObject.GetPersonInfo() is IHighFiveCharacter)
                {
//						Debug.Log($"GetItem:{itemData.ID}");
                    CEventCenter.BroadMessage(Message.M_AddItem, itemData.ID, 1);
                    GameObject.Destroy(obj);
                }
            };

            #endregion
        }
コード例 #13
0
ファイル: CsvMgr.cs プロジェクト: mosheepdev/Moba-1
        static void ReadConfigData(Type type, string filePath = null)
        {
            var fileLoadPath = filePath;

            if (string.IsNullOrEmpty(fileLoadPath) || fileLoadPath == type.Name)
            {
                fileLoadPath = type.Name;
            }

            string getString = ResourceMgr.GetAsset <TextAsset>(fileLoadPath, OriginBundleKey.File).text;

            var csr = new CsvReaderByString(getString);

            var dataRow = new Dictionary <string, CsvMgr> ();

            FieldInfo[] fieldInfos = new FieldInfo[csr.ColCount];
            for (int colNum = 1; colNum < csr.ColCount + 1; colNum++)
            {
                fieldInfos [colNum - 1] = type.GetField(csr [1, colNum]);
            }

            //每行都是一条数据,所以循环行数次
            for (int i = 3; i < csr.RowCount + 1; i++)
            {
                var dataObj = Activator.CreateInstance(type);

                //逐个判断当前行每一列域类型加入字典
                for (int j = 0; j < fieldInfos.Length; j++)
                {
                    string fieldValue = csr [i, j + 1];

                    //试探可能的类型,将数据填充到数据项dataItem中
                    object dataItem = new object();
                    switch (fieldInfos [j].FieldType.ToString())
                    {
                    case "System.Single":
                        dataItem = float.Parse(fieldValue);
                        break;

                    case "System.Int32":
                        dataItem = int.Parse(fieldValue);
                        break;

                    case "System.Int64":
                        dataItem = long.Parse(fieldValue);
                        break;

                    case "System.String":
                        dataItem = fieldValue;
                        break;

                    default:
                        Debug.LogWarning("error data type");
                        break;
                    }

                    fieldInfos [j].SetValue(dataObj, dataItem);

                    //如果是第一列,这一列被视为主键
                    if (j == 0)
                    {
                        dataRow.Add(dataItem.ToString(), (CsvMgr)dataObj);
                    }
                }
            }

            dataDic.Add(fileLoadPath, dataRow);                //可以作为参数
        }
コード例 #14
0
        /// <summary>
        /// 读取数据结构信息
        /// </summary>
        private static void LoadRootConfigData()
        {
            //避免重复初始化
            if (_dataConfigInfos != null)
            {
                return;
            }

            _dataConfigInfos = new Dictionary <string, DataConfigInfo>();
            var getString = ResourceMgr.GetAsset <TextAsset>("DataConfig", OriginBundleKey.File).text;

            var csr = new CsvReaderByString(getString);

            for (var i = 1; i < csr.RowCount + 1; i += 2)
            {
                var config = new DataConfigInfo();
                for (var j = 1; j < csr.ColCount + 1; j++)
                {
                    var name = csr[i + 0, j];
                    var type = csr[i + 1, j];
                    switch (type)
                    {
                    case "className":
                        config.className = name;
                        break;

                    case "parentClassName":
                        if (!string.IsNullOrEmpty(name))
                        {
                            config.parentName = name;
                            _dataConfigInfos[config.parentName]
                            .childrenNames.Add(config.className);
                        }
                        break;

                    case "fileKeys":
                        foreach (var fileKey in name.Split('_'))
                        {
                            config.fileKeys.Add(fileKey.Trim());
                        }
                        break;

                    default:
                        if (string.IsNullOrEmpty(name))
                        {
                            break;
                        }
                        config.fieldInfos.Add(
                            name,
                            new FieldInfo
                        {
                            fieldName = name,
                            fieldType = type
                        });
                        break;
                    }
                }
                if (string.IsNullOrEmpty(config.className))
                {
                    throw new Exception("ClassName is null ???");
                }
                if (config.fileKeys.Count == 0)
                {
                    config.fileKeys.Add(config.className);
                }

                _dataConfigInfos.Add(config.className, config);
            }
        }
コード例 #15
0
        /// <summary>
        /// 加载数据,fileKey不合法的时候默认取type.Name
        /// </summary>
        /// <param name="type"></param>
        /// <param name="filePath"></param>
        private static void LoadConfigData(Type type, string fileName)
        {
            Assert.IsNotNull(type);
            Assert.IsNotNull(_dataConfigInfos);
            Assert.IsFalse(string.IsNullOrEmpty(fileName));

            CsvReaderByString csr = null;

            #region 加载csr并初始化fileKey

            //fileKey不合法的时候默认取type.Name

            var asset = ResourceMgr.GetAsset <TextAsset>(fileName, OriginBundleKey.File);

            if (asset == null)
            {
                throw new Exception($"加载数据文件失败,typeKey:{type.Name},fileName:{fileName}");
            }

            csr = new CsvReaderByString(asset.text);

            #endregion

            System.Reflection.FieldInfo[] fieldInfos = null;

            #region 根据type初始化fieldInfos


            fieldInfos = new System.Reflection.FieldInfo[csr.ColCount];
            for (var colNum = 1; colNum < csr.ColCount + 1; colNum++)
            {
                var info = type.GetField(csr [1, colNum]);

                if (info == null)
                {
                    throw new Exception($"GetField failed:如果使用了多态,请尽量使用具体类型代替\ntype:{type.Name}\nfileKey:{fileName}\nfieldName:{csr[1,colNum]}");
                }

                fieldInfos[colNum - 1] = info;
            }

            #endregion


            var dataRow = new Dictionary <string, CsvMgr> ();

            //每行都是一条数据,所以循环行数次
            for (var i = 2; i < csr.RowCount + 1; i++)
            {
                var dataObj = Activator.CreateInstance(type);

                //逐个判断当前行每一列域类型加入字典
                for (var j = 0; j < fieldInfos.Length; j++)
                {
                    var fieldValue = csr [i, j + 1];

                    //试探可能的类型,将数据填充到数据项dataItem中
                    var dataItem = new object();
                    try
                    {
                        switch (fieldInfos [j].FieldType.ToString())
                        {
                        case "System.Single":
                            dataItem = string.IsNullOrEmpty(fieldValue) ? default(float) : float.Parse(fieldValue);
                            break;

                        case "System.Int32":
                            dataItem = string.IsNullOrEmpty(fieldValue) ? default(int) : int.Parse(fieldValue);
                            break;

                        case "System.Int64":
                            dataItem = string.IsNullOrEmpty(fieldValue) ? default(long) : long.Parse(fieldValue);
                            break;

                        case "System.String":
                            dataItem = string.IsNullOrEmpty(fieldValue) ? default(string) : fieldValue;
                            break;

                        default:
                            throw new Exception($"意料之外的字段类型:{fieldInfos [j].FieldType}\ntype:{type.Name}\nfileKey:{fileName}");
                        }
                    }
                    catch (FormatException e)
                    {
                        throw new Exception($"{e.Message}\ninputString:{fieldValue}\ntype:{type.Name}\nfileKey:{fileName}\npos:[{i},{j}]");
                    }



                    fieldInfos [j].SetValue(dataObj, dataItem);

                    //如果是第一列,这一列被视为主键
                    if (j == 0)
                    {
//						Debug.Log(dataObj);
                        dataRow.Add(dataItem.ToString(), (CsvMgr)dataObj);
                    }
                }

                // Debug.Log($"$insert data {dataObj}");
            }

            if (dataRow.Count == 0)
            {
                Debug.LogWarning($"itemDataRow is empty: TypeName{type.Name}, fileName:{fileName}");
            }

            //debug
            // foreach (var kv in dataRow)
            // {
            //  Debug.Log($"success get data: {kv.Value}");
            // }

            SafeInsertDataDic(
                type.Name,
                dataRow,
                fileName);
        }
コード例 #16
0
        private void DropItems(string itemId)
        {
            var dropData = CsvMgr.GetData <DropData>(itemId);

            Assert.IsNotNull(dropData);

            //赚钱和经验
            CEventCenter.BroadMessage(Message.M_PlayerExpChange, dropData.money * 5);
            CEventCenter.BroadMessage(Message.M_MoneyChange, dropData.money * 3);

            //掉落物品
            ItemData itemData = null;

            #region 获取itemData

            var allRate = dropData.drag_1 + dropData.drag_2 + dropData.stone_1 + dropData.stone_2;
            var rates   = new[]
            {
                dropData.drag_1 / allRate,
                (dropData.drag_1 + dropData.drag_2) / allRate,
                (dropData.drag_1 + dropData.drag_2 + dropData.stone_1) / allRate,
                (dropData.drag_1 + dropData.drag_2 + dropData.stone_1 + dropData.stone_2) / allRate,
            };
            var randomRate = Random.Range(0, 1f);
            if (randomRate > rates[3])
            {
                throw new Exception("异常概率:" + randomRate);
            }
            else if (randomRate > rates[2])
            {
                itemData = CsvMgr.GetRandomData <GemData>(FileName.GemData_2);
            }
            else if (randomRate > rates[1])
            {
                itemData = CsvMgr.GetRandomData <GemData>(FileName.GemData_1);
            }
            else if (randomRate > rates[0])
            {
                itemData = CsvMgr.GetRandomData <DragData>(FileName.DragData_2);
            }
            else
            {
                itemData = CsvMgr.GetRandomData <DragData>(FileName.DragData_1);
            }

            #endregion

            Assert.IsNotNull(itemData);

            var obj = ResourceMgr.InstantiateGameObject(PrefabName.DropItem, this.position);

            Assert.IsTrue(obj);

            obj.GetComponent <SpriteRenderer>().sprite =
                ResourceMgr.GetAsset <Sprite>(itemData.spriteName);

            var ti = obj.GetOrAddComponent <TriggerInputer>();
            ti.onCollisionEnterEvent2D +=
                col =>
            {
                if (col.gameObject.GetPersonInfo() is IHighFiveCharacter)
                {
                    CEventCenter.BroadMessage(Message.M_AddItem, itemData.ID, 1);
                    GameObject.Destroy(ti.gameObject);
                }
            };
        }