Как проще и красивей записать следующий код :
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;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Необходимо создать личный кабинет клиента бухгалтерской фирмыВ личном кабинете для пользователя будет доступна информация о сдаче налоговой...
Есть форма, которой нужно передать в php значения переменных var и letПеременные var передаются без проблем, а let не хотят