coroutines 또는 InvokeRepeating을 사용할 때 Unity에서 호출 할 함수의 이름과 함께 문자열을 제공해야합니다. 이 함수의 이름을 변경하면 고통을 느낄 수 있습니다. 왜냐하면이 함수를 사용하는 coroutine을 변경해야한다는 것을 기억해야하기 때문입니다. 이 일을하는 더 깨끗한 방법이 있습니까? 이C에서 함수명 가져 오기
InvokeRepeating (SendChangedValues.Name(), SEND_RATE, SEND_RATE); //or
InvokeRepeating (functions.GetName(SendChangedValues), SEND_RATE, SEND_RATE);
같은 것을 가지고 좋을 것이다하지만
InvokeRepeating ("SendChangedValues", SEND_RATE, SEND_RATE);
C#에서이 가능 :
현재는 다음과 같습니다? 아니면 그 문자열을 변경하지 않고 함수의 이름을 변경할 때 오류/경고가 표시되는지 확인해야합니다.
편집 1 : 내가 생각할 수있는 가장 깨끗한 것은 함수의 이름으로 const 문자열을 만들고 함수 자체 앞에 놓는 것입니다. 따라서 문자열을 변경하는 것을 잊어 버리는 것이 더 어렵습니다. 문자열 바로 위에 있으므로 문자열을 변경하여 모든 coroutine을 변경하면됩니다.
감사합니다.
아이브는 들어 본 적이 없지만 호출 할 때 사용할 문자열 변수를 만들고 해당 문자열을 해당 메서드 옆에 유지해야한다고 제안합니다. – Sayse
하하, 예, 그게 제가 생각한 것입니다 : 당신의 코멘트를 쓰는 동안 DI가 내 질문을 편집하고있는 것 같습니다 : P –
함수를 장식하는 사용자 정의 속성을 만들 수 있습니다.이 속성은 함수 이름이 바뀌면 변경하지 않아도되는 식별자로 문자열을 취할 수 있습니다. 그런 다음 해당 문자열을 제공하는 코드를 사용하여 해당 문자열로 초기화 된 사용자 지정 특성으로 장식 된 함수를 찾고 메서드 이름을 가져 와서 매개 변수로 'InvokeRepeating'에 전달합니다.누군가가 속성의 문자열을 변경하는 경우를 보장하지는 않지만, 그렇게 할 필요가 없어서 이론적으로 (적어도 이론상으로) 빈약 한 코드 리팩터의 기회를 줄여야합니다. – LB2