//public RuntimeAnimatorController[] ThreeAniController; //存储三态跳跃动画控制器,气液固(蓄力跳) /// <summary> /// 生成物质的接口 /// </summary> /// <param name="matter">物质</param> /// <param name="tr">要生成的位置</param> /// <param name="type">是玩家还是其他的物质</param> public void CreateMatterObject(ChemistyMatter matter, Transform tr, CreatMatterType type) { //寻找要生成的prefab GameObject m = MatterList.Find(x => x.GetComponent <MatterName>().matterName == matter.name && x.GetComponent <MatterName>().matterState == matter.state); //生成 GameObject t = Instantiate(m, tr.position, tr.rotation); //无效化没必要的组件 switch (type) { case CreatMatterType.Player: Destroy(t.GetComponent <MatterReactionChecker>()); //选择反应绑定 PlayerReactionChecker pr = t.GetComponent <PlayerReactionChecker>(); pr.reactionManager = rctMng; pr.equUI = equUI; pr.createManager = this.gameObject; //pr.ChooseKey1 = ChooseKey1; //pr.ChooseKey2 = ChooseKey2; //pr.ChooseKey3 = ChooseKey3; //pr.changeEquKey = ChangeKey; //移动与物理材质绑定 PlayerController p = t.GetComponent <PlayerController>(); //p.MoveLeftButton = MoveLeft; //p.MoveRightButton = MoveRight; //p.JumpButton = Jump; p.p1 = HasF; p.p2 = NotF; //t.AddComponent<Animator>();//添加动画组件并由Player状态选择添加动画控制器 //蓄力跳 //Animator ani = t.GetComponent<Animator>(); //MatterName pn = t.GetComponent<MatterName>(); //switch(pn.matterState) //{ // case MatterState.gas: // ani.runtimeAnimatorController = ThreeAniController[0]; // if(pn.matterName=="CO2"|| pn.matterName == "O2") // { // p.IsOpposite = false; // }else // { // p.IsOpposite = true; // } // break; // case MatterState.liquid: // ani.runtimeAnimatorController = ThreeAniController[1]; // p.IsOpposite = false; // break; // case MatterState.solid: // ani.runtimeAnimatorController = ThreeAniController[2]; // p.IsOpposite = false; // break; //} t.tag = "Player"; cmr.GetComponent <CameraFollowing>().ChangeTarget(t, false); break; case CreatMatterType.Matter: Destroy(t.GetComponent <PlayerController>()); Destroy(t.GetComponent <PlayerReactionChecker>()); t.GetComponent <MatterReactionChecker>().reactionManager = rctMng; t.GetComponent <MatterReactionChecker>().createManager = this.gameObject; t.tag = "Matter"; break; } }
private void Start() { realText = EquationText.text; //提取文件数据 cmtEqu = new List <ChemicalEqu>(); //储存方程式 char[] t = new char[50]; //提取句子容器 //遍历数据 for (int i = 0; i < realText.Length; i++) { int j = 0; //句子容器累加 int k = 0; //提取一行 while (i < realText.Length && realText[i] != '\n') { t[j++] = realText[i++]; } char[] m = new char[50]; //提取物质容器 ChemistyMatter cm = new ChemistyMatter(); //储存物质中介 ChemicalEqu equ = new ChemicalEqu { input = new List <ChemistyMatter>(), output = new List <ChemistyMatter>() }; //储存方程中介 bool isInput = true; //判断反应物生成物 int index = 0; //用于物质容器 for (; k < j; k++) { char[] mm; switch (t[k]) { case '+': m[index - 1] = '\0'; mm = new char[index - 1]; CharCopy(mm, m, index - 1); cm.name = new string(mm); m.Initialize(); index = 0; switch (t[k - 1]) { case 'g': cm.state = MatterState.gas; break; case 'l': cm.state = MatterState.liquid; break; case 's': cm.state = MatterState.solid; break; } if (isInput) { equ.input.Add(cm); } else { equ.output.Add(cm); } break; case '[': m[index - 1] = '\0'; mm = new char[index - 1]; CharCopy(mm, m, index - 1); cm.name = new string(mm); m.Initialize(); index = 0; switch (t[k - 1]) { case 'g': cm.state = MatterState.gas; break; case 'l': cm.state = MatterState.liquid; break; case 's': cm.state = MatterState.solid; break; } equ.input.Add(cm); isInput = false; switch (t[k + 1]) { case 'N': equ.conditon = ReactionCondition.normal; break; case 'L': equ.conditon = ReactionCondition.light; break; case 'H': equ.conditon = ReactionCondition.heat; break; case 'E': equ.conditon = ReactionCondition.electrify; break; case 'C': equ.conditon = ReactionCondition.condense; break; case 'V': equ.conditon = ReactionCondition.evaporation; break; } k += 2; break; default: m[index++] = t[k]; break; } } switch (m[index - 2]) { case 'g': cm.state = MatterState.gas; break; case 'l': cm.state = MatterState.liquid; break; case 's': cm.state = MatterState.solid; break; } m[index - 2] = '\0'; char[] cmm = new char[index - 2]; CharCopy(cmm, m, index - 2); cm.name = new string(cmm); equ.output.Add(cm); cmtEqu.Add(equ); } ////输出实验 //foreach (ChemicalEqu equ in cmtEqu) //{ // foreach (ChemistyMatter mt in equ.input) // { // Debug.Log(mt.name); // Debug.Log(mt.name.Length); // switch (mt.state) // { // case MatterState.gas: // Debug.Log("气体"); // break; // case MatterState.liquid: // Debug.Log("液体"); // break; // case MatterState.solid: // Debug.Log("固体"); // break; // } // } // switch (equ.conditon) // { // case ReactionCondition.heat: // Debug.Log("加热"); // break; // case ReactionCondition.light: // Debug.Log("点燃"); // break; // case ReactionCondition.normal: // Debug.Log("常态"); // break; // } // foreach (ChemistyMatter mt in equ.output) // { // Debug.Log(mt.name); // Debug.Log(mt.name.Length); // switch (mt.state) // { // case MatterState.gas: // Debug.Log("气体"); // break; // case MatterState.liquid: // Debug.Log("液体"); // break; // case MatterState.solid: // Debug.Log("固体"); // break; // } // } //} //Debug.Log(cmtEqu.Count); //Debug.Log(cmtEqu[1].input[0].name + cmtEqu[1].input[1].name); }