private void initRTCEngine()
var appid = RoomDataManager.Instance.RoomData.app_id;
var roomid = RoomDataManager.Instance.RoomData.room_id;
var userid = RoomDataManager.Instance.MyUserid;
var token = RoomDataManager.Instance.RtcToken;
RtcEngine = StarkSDK.API.GetRTCEngineManager().GetRtcEngine(appid);
RtcEngine.OnJoinChannelSuccessEvent += OnJoinChannelSuccess;
RtcEngine.OnUserJoinedEvent += OnUserJoined;
RtcEngine.OnUserOfflineEvent += OnUserOffline;
RtcEngine.OnUserMuteAudioEvent += OnUserMuteAudio;
RtcEngine.OnWarningEvent += OnWarning;
RtcEngine.OnErrorEvent += OnError;
RtcEngine.OnAudioVolumeIndicationEvent += OnAudioVolumeIndication;
RtcEngine.JoinChannel(roomid, userid, token, () => { }, (code, reason) => { });
private void OnJoinChannelSuccess(int elapsed)
Debug.Log(string.Format("OnJoinChannelSuccess"));
RtcEngine.EnableLocalAudio();
RtcEngine.MuteLocalAudioStream();
RtcEngine.EnableAudioVolumeIndication(1000, null, null);
private void addSpeakingButtonEvent()
var touchEventTrigger = SpeakingButton.GetComponent<ButtonTouchEventTrigger>();
if (touchEventTrigger == null)
touchEventTrigger = SpeakingButton.gameObject.AddComponent<ButtonTouchEventTrigger>();
touchEventTrigger.OnPressDown = startSpeaking;
touchEventTrigger.OnPressUp = endSpeaking;
private void startSpeaking()
RtcEngine.UnMuteLocalAudioStream();
private void endSpeaking()
RtcEngine.MuteLocalAudioStream();
private void OnAudioVolumeIndication(string uid, int volume, int speakerNum)
Debug.Log(string.Format("OnAudioVolumeIndication"));
if (RoomDataManager.Instance.MyUserid == uid)
MicBack.SetActive(false);
MicBack.SetActive(volume > 0);
BarController.UpdateVolume(volume, 255);
for (int i = 0; i < RoomDataManager.Instance.UserList.Count; i++)
NetWorkManager.UserObject user = RoomDataManager.Instance.UserList[i];
if (user.user_id != uid)
var playerController = PlayerControllers[i];
playerController.SpeakingImage.SetActive(volume > 0);
playerController.BarController.UpdateVolume(volume, 255);