solar system代码更改日志

1月2日:添加公转视角

Try_1:

 //UIManager.cs添加函数
 public void ToggleRevotionView()
{
    foreach (var orbit in orbits)
    {
        Debug.Log(orbit.name);
        if (orbit.name.Equals("EarthOrbit"))
        {
            orbit.SetActive(true);
        }
        else
            orbit.SetActive(false);
    }
}
private GameObject m,v,ma,j,s,ne;
public void SwitchToRevolutionView(string astronomicalBody)//切换到公转视角 astronomicalBody=revolution
  {
    ToggleRevotionView();

    TogglePlanetInfoPanel(true);//显示星球信息栏

    CameraManager.instance.SwitchToOrbitCamera();//使用有轨道的整体视角

    PlanetManager.instance.EnableAllPlanets();
    /*//==逐个删除行星,SetActive(false)后,将各行星删除,导致点击按钮后星球消失。==
    m=PlanetManager.instance.GetPlanet("Mercury");
    m.SetActive(false);
    v= PlanetManager.instance.GetPlanet("Venus");
    v.SetActive(false);
    ma = PlanetManager.instance.GetPlanet("Mars");
    ma.SetActive(false);
    j = PlanetManager.instance.GetPlanet("Jupiter");
    j.SetActive(false);
    s = PlanetManager.instance.GetPlanet("Staurn");
    s.SetActive(false);
    ne = PlanetManager.instance.GetPlanet("Neptune");
    ne.SetActive(false);*/

    PlanetInfo.instance.LoadTextToScrollBar(astronomicalBody);//加载信息介绍内容

    Vector3 cameraPosition = DefaultValues.OverviewCameraPosition();
    CameraManager.instance.OrbitCamera.transform.position = new Vector3(cameraPosition.x, cameraPosition.y, cameraPosition.z);

    this.astronomicalBodiesButtons.SetActive(true);
    this.planetInfoPanel.SetActive(true);
  } /**/

报错1:

Coroutine 'MoveOnOrbit' couldn't be started because the the game object 'Venus' is inactive!
Coroutine 'MoveOnOrbit' couldn't be started because the the game object 'Mars' is inactive!
Coroutine 'MoveOnOrbit' couldn't be started because the the game object 'Mercury' is inactive!
UnityEngine.MonoBehaviour:StartCoroutine(String)
PlanetManager:ToggleMovementOnOrbit(GameObject, Boolean) (at Assets/SolarSystem/Scripts/PlanetManager.cs:258)
PlanetManager:EnableAllPlanets() (at Assets/SolarSystem/Scripts/PlanetManager.cs:235)
UIManager:SwitchToOrbitView() (at Assets/SolarSystem/Scripts/UIManager.cs:152)
UnityEngine.EventSystems.EventSystem:Update()

结论:不能采用SetActive(flase)删除行星,这样会将各行星删除,导致点击按钮后星球消失。

  • Try_02
//向PlanetManager.cs中添加函数,只显示太阳和地球
public void DisablePlanetsExceptSunAndEarth()
{
    foreach (var astronomicalBody in astronomicalBodies)
    {
        ToggleMovementOnOrbit(astronomicalBody.gameObject, false);
        if (!astronomicalBody.gameObject.name.Equals("Sun") && !astronomicalBody.gameObject.name.Equals("Earth"))
        {
            astronomicalBody.meshRenderers.ForEach(m => m.enabled = false);
        }
        else
        {
            astronomicalBody.meshRenderers.ForEach(m => m.enabled = true);
            ToggleMovementOnOrbit(astronomicalBody.gameObject, true);//沿着轨迹运动
        }
    }
}
//修改UIManager.cs中对函数SwitchToRevolutionView()改写
 public void SwitchToRevolutionView(string astronomicalBody)//切换到公转视角 astronomicalBody=revolution
 {
   ToggleRevotionView();

   TogglePlanetInfoPanel(true);//显示星球信息栏

   CameraManager.instance.SwitchToOrbitCamera();//使用有轨道的整体视角

   PlanetManager.instance.EnableAllPlanets();//启动所有行星

   PlanetManager.instance.DisablePlanetsExceptSunAndEarth();//去除太阳和地球外所有行星,暂时隐藏

   PlanetInfo.instance.LoadTextToScrollBar(astronomicalBody);//加载信息介绍内容

   PlanetManager.instance.DisableSunFlare("Sun");//去除左上角太阳光晕

   this.astronomicalBodiesButtons.SetActive(true);
   this.planetInfoPanel.SetActive(true);

   } 

存在问题:当点击地球细节按钮后,再次点击公转按钮则不会显示地球
存在问题:最好能够加一个俯视视角Camera

1月3日:添加自转轴

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值