WebGL全屏非全屏切换(UGUI NGUI都有)

//NGUI相关代码
public UIButton Btn1;

void Start()
{    
    UIEventListener.Get(Btn1.gameObject).onClick = OnBtn1Click;
}

private void OnBtn1Click(GameObject go)
{
    Debug.Log("NGUI OnNGUIBtn1Click");
    Screen.fullScreen = !Screen.fullScreen;
}
//UGUI相关代码
public Button Btn1;

void Start()
{
    Btn1.onClick.AddListener(delegate 
    {
        Debug.Log("UGUI OnFullScreen1 Click");
        Screen.fullScreen = !Screen.fullScreen;
    });
}

        以上代码发布之后,点击Btn1按钮都有一个问题,从非全屏切换到全屏的情况下,点一下没有反应,再点击任何区域就会切换到全屏,从全屏切换到非全屏没有问题。

       尝试使用UGUI的EventTrigger与NGUI的UIEventTrigger

//NGUI相关代码
public void OnUIEventTriggerClick()
{
    Debug.Log("NGUI OnUIEventTriggerClick");
    Screen.fullScreen = !Screen.fullScreen;
}
//UGUI相关代码
public void OnEventTriggerClick()
{
    Debug.Log("UGUI OnEventTriggerClick");
    Screen.fullScreen = !Screen.fullScreen;
}

       以上是NGUI与UGUI相关代码跟组件,导出工程后发现UGUI的全屏/非全屏切换没有问题,但是NGU的非全屏切换到全屏还是有之前的问题。

       因为项目使用的还是NGUI,所以还是得想办法解决,就调用JS那边的接口,最后NGUI与UGUI的全屏切换都没问题了,以下是相关代码。

        创建Plugins文件夹,创建MyJS.jslib文件 编写相关代码

mergeInto(LibraryManager.library, 
{
    SetFullScreen: function (value) 
    {
        console.log("SetFullScreen Click value = " +value);
        gameInstance.SetFullscreen(value);
    },
});

      Unity工程里面创建UnityCallJS.cs脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Runtime.InteropServices;

public class UnityCallJS
{
    [DllImport("__Internal")]
    public static extern void SetFullScreen(int num);
}
//NGUI相关代码
public UIButton UnityCallJSBtn;

void Start()
{
    UIEventListener.Get(UnityCallJSBtn.gameObject).onClick = OnUnityCallJSBtnClick;
}

private void OnUnityCallJSBtnClick(GameObject go)
{
    Debug.Log("NGUI OnUnityCallJSClick ");
    UnityCallJS.SetFullScreen(Screen.fullScreen ? 0 : 1);
}
//UGUI相关代码
public Button UnityCallJSBtn;

void Start()
{
    //Console.Instance.Show();
    UnityCallJSBtn.onClick.AddListener(delegate 
    {
        Debug.Log("UGUI OnUnityCallJSClick ");
        UnityCallJS.SetFullScreen(Screen.fullScreen ? 0 : 1);
    });
}

总结:如果是使用UGUI可以使用EventTrigger来实现全屏或者通过调用JS的接口,EventTrigger要好一点。NGUI暂时只想到通过调用JS接口实现,欢迎补充。

Demo地址:https://download.csdn.net/download/fan1044696905/12295198

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值