티스토리 뷰
반응형
[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
반응형
'유니티(unity)' 카테고리의 다른 글
[unity/c#] 유니티에서 강제로 해상도 지정하기 (0) | 2022.01.20 |
---|---|
[unity/android] 유니티에서 안드로이드 권한(permission) 허용(팝업/수락) (2) | 2021.12.09 |
[unity/android] 유니티 개발 시 android에서 Debug.Log() 로그 출력하기 (0) | 2021.12.08 |
[unity/nfc] NFC 리더 라이브러리 구현(이벤트 핸들러 방식) (0) | 2021.12.08 |
[unity/android]유니티 안드로이드에서 백그라운드로 타이머 구현 방법 (0) | 2021.12.06 |
댓글
반응형