나는 시간에 객체 이동을 할 수있는 확장 방법을 썼다. 잘 작동한다; 그러나 개체가 일정 기간 동안 해당 작업을 수행 중이므로 내 업데이트 방법과 같은 다른 모든 호출을 무시합니다. 나는 코 루틴 (Coroutine)으로 뭔가를 할 필요가 있다고 가정하고 있지만 어디로 가는지 알 수 없다. 다른 코드 (예 : Update() 메서드)가 동시에 실행되는 것을 방지하지 않고 다음 코드를 작동시키는 방법은 무엇입니까?는 코 루틴 확장 메소드
======================================= 다음과 같이 단순화 된 버전입니다 =========================
//The following script is attached to the GameObject
[RequireComponent(typeof(Rigidbody2D)]
public class MyBehaviour : MonoBehaviour
{
void Start()
{
rigidbody2D.MoveOverTime();
}
void Update(){
rigidbody2D.MovePosition(transform.position.x + 1, transform.position.y);
}
}
========================================================================================================== ================================
//The following script is not attached to anything
public static class Rigidbody2DExtension
{
public static void MoveOverTime(this Rigidbody2D rigidbody2D)
{
gameObject.addComponent<MoveOverTimeComponent>();
}
}
[RequireComponent(typeof(Rigidbody2D)]
class MoveOverTimeComponent : MonoBehaviour
{
void Update(){
MovePositionByALittleBit();
}
void MovePositionByALittleBit(){
float x = transform.position.x + 1;
float y = transform.position.y;
rigidbody2D.MovePosition(new Vector2(x, y));
}
}
은 왜'Update' 방법 (들)를 호출 할 것인가? 내가 볼 수있는 한 그들은 결코 호출되지 않는다. 그들은 어떻게 MonoBehaviour –
이라고 @KirkWoll? 당신은이 방법을 무시하지 않고 개인적입니다. – Evorlor
의 확장으로 자동 –