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