Как проще и красивей записать следующий код :
RTSCameraController tempRTSCameraController = transform.GetComponent<RTSCameraController> ();
if(tempRTSCameraController) {
tempRTSCameraController.enabled = true;
}
MouseLook tempMouseLook = transform.GetComponent<MouseLook> ();
if(tempMouseLook) {
tempMouseLook.enabled = false;
}
ScenarioCamera tempScenarioCamera=transform.GetComponent<ScenarioCamera> ();
if(tempScenarioCamera) {
tempScenarioCamera.enabled = !valueBool;
}
CameraSwitchBetweenGameObjManager tempCameraSwitchBetweenGameObjManager = transform.GetComponent<CameraSwitchBetweenGameObjManager> ();
if(tempCameraSwitchBetweenGameObjManager) {
tempCameraSwitchBetweenGameObjManager.enabled = !valueBool;
}
CameraRotateAroundManager tempCameraRotateAroundManager = transform.GetComponent<CameraRotateAroundManager> ();
if(tempCameraRotateAroundManager) {
tempCameraRotateAroundManager.enabled = valueBool;
}
RTCCamera tempRTCCamera = transform.GetComponent<RTCCamera> ();
if(tempRTCCamera) {
tempRTCCamera.enabled = valueBool;
}
MonoBehaviour сам по себе имеет методы GetComponent, не нужно для этого каждый раз вызывать this.transform
Сегодня Unity полностью перешла на .NET 4.x, так что стоит использовать его нововведения, а конкретно - Null Propagation. Но для этого свойство enabled нужно обернуть в расширение класса MoniBehaviour:
Зачем изначально вешать компоненты, которые будут отключены по флагу? Делайте if(flag) this.AddComponent<T>();
Что там за логика в коде в целом, я не знаю, поэтому приведу код с улучшениями из пунктов 1-2:
public class NullPropagation : MonoBehaviour
{
void SomeMethod(bool valueBool) {
GetComponent<RTSCameraController>() ?.SetActive(true);
GetComponent<MouseLook>() ?.SetActive(false);
GetComponent<ScenarioCamera>() ?.SetActive(!valueBool);
GetComponent<CameraSwitchBetweenGameObjManager>()?.SetActive(!valueBool);
GetComponent<CameraRotateAroundManager>() ?.SetActive(valueBool);
GetComponent<RTCCamera>() ?.SetActive(valueBool);
}
}
public static class Utility {
public static void SetActive(this MonoBehaviour obj, bool active) {
obj.enabled = active;
}
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости