Unity 转微信:GitHub - wechat-miniprogram/minigame-unity-webgl-transform
使用的是微信开发的插件 GitHub - wechat-miniprogram/minigame-unity-webgl-transform
路径相关:Unity:Application.streamingAssetsPath --> 配置的cdn路径+StreamingAssets
搭建本地cdn : Tomcat安装及配置教程(超详细)_AAACod的博客-CSDN博客
异步方案:UniTask
网络方案:WebSocket
播放视频:
在plugins 里面添加 minigame-unity-webgl-transform/Demo/WX_Video/Assets/Plugins/TransparentBackground.jslib at main · wechat-miniprogram/minigame-unity-webgl-transform · GitHub
- public class WeChatMoviePlayer
- {
- WXVideo video;
- public Action OnPlayEnd;
- public Action OnReady;
- public bool isLoop;
- public void SetClip(string rPath)
- {
- WX.InitSDK((int code) => {
- var systemInfo = WX.GetSystemInfoSync();
- rPath = AssetsProxy.CDN + rPath;//+ "?v=" + DateTime.Now.ToString();
- Debug.Log("++++++++++++++++wechat movie player is ready to run path =" + rPath);
- video = WX.CreateVideo(new WXCreateVideoParam()
- {
- src = rPath,
- controls = false,
- showProgress = false,
- showProgressInControlMode = false,
- autoplay = true,
- showCenterPlayBtn = false,
- underGameView = true,
- loop = isLoop,
- width = ((int)systemInfo.screenWidth),
- height = ((int)systemInfo.screenHeight),
- });
-
- video.OnPlay(() =>
- {
- Close3DCamera();
- Debug.Log("++++++++++++++++wechat movie player is running path =" + rPath);
- OnReady?.Invoke();
- });
-
- video.OnEnded(() =>
- {
- Debug.Log("++++++++++++++++wechat movie player is ended path =" + rPath);
- OnPlayEnd?.Invoke();
- if (!isLoop)
- {
- Destory();
- }
- });
- });
- }
-
- public void Stop()
- {
- Debug.Log("++++++++++++++++wechat movie player is Stop");
- video?.Stop();
-
- }
-
- public void Play()
- {
- video?.Play();
- }
-
-
- public void Pause(bool rPause)
- {
- if (rPause)
- {
- Debug.Log("++++++++++++++++wechat movie player is Pause");
- video?.Pause();
- }
- else
- {
- Debug.Log("++++++++++++++++wechat movie player is Play");
- video?.Play();
- }
- }
- public void Destory()
- {
- Debug.Log("++++++++++++++++wechat movie player is destory");
- Open3DCamera();
- video?.Destroy();
- }
- public void InitUICamera()
- {
- Debug.Log("++++++++++++++++wechat movie player InitUICamera");
- Canvas[] canvases = GameObject.FindObjectsOfType
- foreach (var canvas in canvases)
- {
- if (canvas.renderMode == RenderMode.ScreenSpaceCamera)
- {
- UICanvas = canvas;
- UICamera = canvas.worldCamera;
- }
- }
- }
- public Canvas UICanvas;
- public Camera UICamera;
-
- private void Close3DCamera()
- {
- Debug.Log("++++++++++++++++wechat movie player Close3DCamera");
- Camera[] cameras = GameObject.FindObjectsOfType
(); - foreach (var cam in cameras)
- {
- CameraData cd = new CameraData { mCamera = cam, mFlags = cam.clearFlags, mBgColor = cam.backgroundColor };
- if (!cd.IsVedioCamera && cam.enabled)
- {
- Debug.Log("close camera = " + cam.gameObject.name);
- cam.gameObject.SetActive(false);
- camera3dList.Add(cd);
- }
- else
- {
- UICanvas.worldCamera = cam;
- }
- }
- }
-
- public struct CameraData
- {
- public Camera mCamera;
- public CameraClearFlags mFlags;
- public Color mBgColor;
- public bool IsVedioCamera => mCamera.name == "VedioCamera";// mCamera != null && ((mCamera.cullingMask & LayerMask.GetMask(new string[] { "UI" })) == 0);
- }
-
- private void Open3DCamera()
- {
- Debug.Log("++++++++++++++++wechat movie player Open3DCamera");
- foreach (var cam in camera3dList)
- {
- cam.mCamera.gameObject.SetActive(true);
- }
- camera3dList.Clear();
- UICanvas.worldCamera = UICamera;
- }
- public List
camera3dList = new List(); - }
IOS 视频播放发现一个bug,播放路径不能带后面的随机值
rPath = AssetsProxy.CDN + rPath;//+ "?v=" + DateTime.Now.ToString();
- x = (int)((int)trans1.anchoredPosition.x + (int)trans1.rect.width / 2),
- y = (int)((int)trans1.rect.height - ((int)trans1.anchoredPosition.y + (int)trans1.rect.height / 2)),
- width = (int)trans1.rect.width,
- height = (int)trans1.rect.height,