Unity의 메시지 메커니즘
5193 단어 Unity
소식을 전달하는 데는 일반적으로 세 가지 방법이 있다.객체의 참조를 저장합니다.2. Unity에서 제공하는 메시지 메커니즘3. C#의 위임 및 이벤트
객체의 참조 저장
예를 들어 수류탄이 폭발할 때에는 수류탄, 지면, 부근 물체 등 게임 요소의 대상을 획득한 후 폭발 효과를 틀어야 한다.이런 방법은 간단하고 거칠지만 프로젝트의 규모가 커지면 증감 개정은 매우 번거로워질 것이다.사실 이것은 결합도가 비교적 높은 방안이다.
Unity에서 제공하는 메시지 메커니즘
Unity 자체는 Messages 메시지 메커니즘을 제공합니다.
C#의 이벤트
C#의 의뢰와 사건은 메시지 전달에 매우 유용하고 디자인 모델의 측면에서 보면 전형적인 관찰자 모델이다.
예를 들어 우리는 로커터치 Begin, 로커터치 Move, 로커터치 End 세 가지 이벤트를 디자인할 수 있다.
이 사건에 관심이 있는 대상은 해당하는handler를 통해 이 사건을 감청하여 일대다 게임Object 간의 통신을 할 수 있다.
구체적으로는 아래에서 제시한 실현을 참고할 수 있다.
public class Rocker : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler {
public delegate void RockerTouchBegin(Vector2 vec);
public delegate void RockerTouchMove(Vector2 vec);
public delegate void RockerTouchEnd();
public event RockerTouchBegin OnTouchBegin;
public event RockerTouchMove OnTouchMove;
public event RockerTouchEnd OnTouchEnd;
private bool isTouched = false;
public void OnPointerDown(PointerEventData eventData) {
isTouched = true;
if (null != OnTouchBegin)
OnTouchBegin(eventData.position);
}
public void OnPointerUp(PointerEventData eventData) {
isTouched = false;
if (null != OnTouchEnd)
OnTouchEnd();
}
public void OnDrag(PointerEventData eventData) {
if (null != OnTouchMove)
OnTouchMove(eventData.position);
}
}
private Rocker rocker;
void Start() {
rocker = FindObjectOfType<Rocker>();
rocker.OnTouchBegin += OnTouchBegin;
rocker.OnTouchMove += OnTouchMove;
rocker.OnTouchEnd += OnTouchEnd;
}
void OnTouchBegin(Vector2 vec) {
Debug.Log("OnTouchBegin");
}
void OnTouchMove(Vector2 vec) {
Debug.Log("OnTouchMove");
}
void OnTouchEnd() {
Debug.Log("OnTouchEnd");
}
잘못이 있으면 지적해 주십시오.
email:dxmdxm1992#gmail.com
blog: http://blog.csdn.net/david_dai_1108
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
photonnetwork.instantiate에서 gamepobject 유형을 생성 한 다음 상태 및 값을 참조하는 방법주로 마지막 기사에서 일어난 일의 수정입니다. 지난번↓ 그럼 주제입니다. (타이틀이 정리되어 없어서 죄송합니다) 우선 전회의 Illegal view ID:0입니다만 photonnetwork.instantiate를 사...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.