Unity学习-总结在做项目时学到的一些东西(代码控制)

协程控制语句:

协程控制模型的时候写在协程控制的函数里,和写在调用协程的方法后面效果略有差异。

//声明 
IEnumerator EnterHeart()
    {
        StartBlack.SetActive(true);
        yield return new WaitForSeconds(3);//延时时间
        StartBlack.SetActive(false);
    }

//调用
StartCoroutine(EnterHeart());

控制动画开闭代码语句:

Model_People.gameObject.GetComponent().enabled = true;
//设置Model_People的Animator

判断注视点碰撞并控制显示的语句:

 if (Physics.Raycast(headTransform.position, headTransform.forward, out hit, 20))//检测碰撞
        {
            if (localHit == null)
            {
                localHit = hit.transform.gameObject;
                Debug.Log(localHit.name);//输出,便于测试
                if (localHit.name == "HeartPlane")//碰撞心脏
                { 
                    //注视点初始
                    image.fillAmount = 0;
                   
                    image.gameObject.SetActive(true);
                    image.DOFillAmount(1, 3).OnComplete(() =>//圆环填满,延迟3秒
                    {
                        Init();//初始化其他按钮
                        //注视按钮消失
                        image.gameObject.SetActive(false);                
                        ButtonPlane[0].SetActive(false);
                        //模型显示
                        model_hert.SetActive(true);
                        model_zhanshitai.SetActive(true);
                        //判断语言选择显示
                        switch (GameController.M)
                        {
                            case 0: cavans_hertS[0].SetActive(true);
                                    tname = "TimelineControllerHeartCHN";
                                    TimelineManager();break;
                            case 1: cavans_hertS[1].SetActive(true);
                                    tname = "TimelineControllerHeartENG";
                                    TimelineManager();break;
                            case 2: cavans_hertS[2].SetActive(true);
                                    tname = "TimelineControllerHeartFI";
                                    TimelineManager();break;
                        }
                        StartCoroutine(PeopleInHeartPlaneActive());//进入心脏协程
                    });
                }
                
                else if (localHit.name == "VeinPlane")//静脉
                {
                    image.fillAmount = 0;
                    image.gameObject.SetActive(true);
                    image.DOFillAmount(1, 3).OnComplete(() =>
                    {
                        Init();
                        image.gameObject.SetActive(false); 
                        ButtonPlane[1].SetActive(false);
                        model_Vein.SetActive(true);
                        model_zhanshitai.SetActive(true);

                        switch (GameController.M)
                        {
                            case 0:
                                cavans_Vein[0].SetActive(true);
                                tname = "TimelineControllerVeinCHN";
                                TimelineManager(); break;
                            case 1:
                                cavans_Vein[1].SetActive(true);
                                tname = "TimelineControllerVeinENG";
                                TimelineManager(); break;
                            case 2:
                                cavans_Vein[2].SetActive(true);
                                tname = "TimelineControllerVeinFI";
                                TimelineManager(); break;
                        }
                    });
                }
            }
        }
        else
        {
            localHit = null;
            image.DOKill();//杀死动画,一离开就消失
            image.fillAmount = 0;
        }
    }

 

设置注视点的颜色:

Color BlueColor = new Color(0,244,255,255);
image.color = BlueColor;
headSetController.GetComponent().color = BlueColor;

遍历设置碰撞体和模型数组激活:

foreach (GameObject _obj in ButtonPlanes)//所有模型显示
        {
            _obj.SetActive(true);
        }
foreach (BoxCollider _COLIDER in Colliders)//所有碰撞体激活
        {
            _COLIDER.enabled = true;
        }

你可能感兴趣的:(c#,unity3D)