티스토리 뷰

반응형

[unity/beacon] 유니티에서 비콘 사용하기(이벤트 핸들러방식 소스코드 source code)

 

####사용 전 주의 사항 ####

비콘을 이용하기 위해서는 위치정보가 필수이기때문에 꼭 허용한다음 이용하길 바란다

 

IBeaconReceiver를 활용하여 코드를 깔끔하게 이벤트 방식으로 정리하였다.

 

#BeaconHelper 함수 구현

#설명: iBeaconReceiver Scan()은 실행 시 종료 전까지 스캔한 목록이 삭제 되지않고 누적이 되기 때문에 반드시 주기적으로 Stop() / Scan()을 반복하여 리스트를 관리하여야하낟.

public class BeaconHelper : MonoBehaviour
{
	//이벤트 핸들러
    public delegate void PacketReceiveEventHandler(Beacon[] code);
    public static event PacketReceiveEventHandler PacketReceiveEventHandlerEvent;
    
    //객체 생성과 함께 비콘 스캔 실행
    private void Start()
    {
        RunBeacon();
    }

    public void RunBeacon()
    {
        //이벤트 중복을 막기위해 삭제 후 생성을 해준다.
        iBeaconReceiver.BeaconRangeChangedEvent -= OnBeaconRangeChanged;
        iBeaconReceiver.BeaconRangeChangedEvent += OnBeaconRangeChanged;
        
        //regions를 초기화 해준다.
        iBeaconReceiver.regions = new iBeaconRegion[] { new iBeaconRegion(string.Empty, new Beacon()) };
        
        //스캔 시작
        iBeaconReceiver.Scan();
    }

	//스캔 종료
    public void StopBeacon()
    {
        iBeaconReceiver.Stop();
    }

	//스캔 후 생성되는 이벤트
    private void OnBeaconRangeChanged(Beacon[] beacons)
    {
    	//추 후 생성될 이벤트로 해당 리스트를 보낸다.
        PacketReceiveEventHandlerEvent(beacons);
        
        //스캔종료 후 
        StopBeacon();
        //5초 후에 스캔을 다시 시작한다.
        Invoke("RunBeacon", 5.0f);
    }
}

 

#BeaconHelper 클래스 활용

#내용: 이벤트 생성 후 리스트를 받아서 적용하면된다.

public class test : MonoBehaviour
{
    [SerializeField]
    Text text;
    void Start()
    {
        BeaconHelper.PacketReceiveEventHandlerEvent += BeaconHelper_PacketReceiveEventHandlerEvent;
    }

    private void BeaconHelper_PacketReceiveEventHandlerEvent(Beacon[] code)
    {
        text.text = text.text+"\n"+code.Length.ToString();
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

 

추가적인 문의나 소스코드및 다양한 질의사항을 댓글로 받습니다.

감사합니다.

 

#beacon #unity #c# #bluetooth #scan #rssi #acculiar

반응형
댓글
반응형