unity3d Unity 3D嵌入式浏览器插件URL控件

vlf7wbxs  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(187)

我是Unity 3D的新手,从来没有接触过c#,现在我有一个项目,用Unity 3D开发一个程序,可以使用程序中的内部浏览器访问外部链接,并且可以使用按钮来控制这个内部浏览器的关闭和打开。
我使用嵌入式浏览器插件,但发生了几个问题.
1.当设置插件工作时,内部浏览器将自动沿着程序启动。其中我假设浏览器是由一个按钮调用。我假设需要一行gameObject.SetActive(false);来停止浏览器脚本中的浏览器自动启动,但我可以找到放在哪里,或使用其他函数来停止它。
1.我写了一个通用脚本来通过按钮关闭和打开这个内部浏览器。

public class OpenCloseOption : MonoBehaviour
{
 // Close the browser window with cross button
 public void Close()
 {
     this.gameObject.SetActive(false);
 }

 // Open the browser window with bookmark button
 public void Open()
 {
     gameObject.SetActive(true);
 }
}

关闭和打开功能工作正常,但当我关闭浏览器窗口,并再次打开,它会显示上一页时,它被关闭(about.google),但不是默认页谷歌索引页.有没有办法初始化浏览器时,它被关闭或重新启动?
我试过销毁功能,它不工作,一旦销毁游戏对象,它将永远不会被调用了。

1.我将在程序中放置一些书签按钮,并在浏览器组件中保留URL为空。这样,当我单击书签按钮时,浏览器窗口将弹出并引导我到所需的页面。

我在浏览器脚本中发现了一些代码,看起来像是做这个要求,但我不知道如何改变它。

/**
  * Navigates to the given URL. If force is true, it will go there right away.
  * If force is false, pages that wish to can prompt the user and possibly cancel the
  * navigation.
  */
 public void LoadURL(string url, bool force) {
     if (DeferUnready(() => LoadURL(url, force))) return;

     const string magicPrefix = "localGame://";

     if (url.StartsWith(magicPrefix)) {
         url = LocalUrlPrefix + url.Substring(magicPrefix.Length);
     }

     if (string.IsNullOrEmpty(url)) {
         //If we ask CEF to load "" it will crash. Try Url = "about:blank" or LoadHTML() instead.
         throw new ArgumentException("URL must be non-empty", "value");
     }

     loadPending = true;

     BrowserNative.zfb_goToURL(browserId, url, force);
 }

 /**
  * Loads the given HTML string as if it were the given URL.
  * For the URL use http://-like porotocols or else things may not work right. (In particular, the backend
  * might sanitize it to "about:blank" and things won't work right because it appears a page isn't loaded.)
  *
  * Note that, instead of using this, you can also load "data:" URIs into this.Url.
  * This allows pretty much any type of content to be loaded as the whole page.
  */
 public void LoadHTML(string html, string url = null) {
     if (DeferUnready(() => LoadHTML(html, url))) return;

     //Debug.Log("Load HTML " + html);

     loadPending = true;

     if (string.IsNullOrEmpty(url)) {
         url = LocalUrlPrefix + "custom";
     }

     if (string.IsNullOrEmpty(this.Url)) {
         //Nothing will happen if we don't have an initial page, so cause one.
         this.Url = "about:blank";
         skipNextLoad = true;
     }

     BrowserNative.zfb_goToHTML(browserId, html, url);
 }

有人能帮我指出哪一部分是控件加载按钮的URL到这里吗?

11dmarpk

11dmarpk1#

你找到解决办法了吗?试试这个...
要使用此脚本,请执行以下步骤:

public class OpenUrlButton : MonoBehaviour {

    public Browser browser;
    public string urlInput;

    public void OpenUrl() {
        string url = urlInput;
        if (url != null && url.Length > 0) {
            browser.LoadURL(url);
        }
    }
}

在Unity场景中创建一个新的UI按钮。
通过将OpenUrlButton脚本拖放到"检查器"视图中的按钮上,将其附加到按钮。
在"检查器"视图中,将"浏览器"组件分配给脚本中的浏览器字段。可以通过将"浏览器"组件从"层次结构"视图拖放到"检查器"视图中的浏览器字段来执行此操作。
将脚本分配给按钮,只需键入代码:
保存场景并运行游戏。当你点击按钮时,浏览器应该会加载你输入的URL到附着在按钮上的脚本中。
我希望这能有所帮助!如果你有任何进一步的问题,请告诉我。

相关问题