unity3d 嵌入网页 源码_unity 嵌入 android源代码 - CSDN
  • 本文所用到的插件,是...为更易于使用,本插件是将其源码由javascript改为C#代码,并做了一些修改和优化,并打包成unitypackage包,可直接导入项目中使用,方便快捷! 本插件支持Unity网页javascript进行双向交互

    本文所用到的插件,是修改自一个日本人keijiro的代码。他的源码地址为:https://github.com/keijiro/unity-webview-integration

    为更易于使用,本插件是将其源码由javascript改为C#代码,并做了一些修改和优化,并打包成unitypackage包,可直接导入项目中使用,方便快捷!

    本插件支持Unity与网页javascript进行双向交互

    插件下载地址http://download.csdn.net/detail/home_498/9577122

    下面是该插件的使用方法:

    1.导入插件包

    右键你的工程,选择Import Package-Custom Package...,选择unity-webview.unitypackage


    此时会显示你要导入的文件,如果不需要看我写的测试用例,则可以不勾选下面的WebViewExample,然后点击Import可导入

    2.场景中引入

    2D场景用的时候,只需在Canvas新建一个Empty(Create Empty),并绑定WebMediator.cs,调整这个Empty的位置和大小,就可以改变网页的显示位置和大小。

    3D场景使用的时候,不需要调整位置和大小,在代码中调用SetMargin进行定位

    3.代码调用

    声明一个类变量,并将上面创建的empty对象绑定至该变量

    public WebMediator WebView;

    在使用的地方直接调用即可,千万别忘记加前面的http://

    WebView.Show("http://blog.csdn.net/home_498/article/details/51918041");

    3D场景使用的时候,再调用下面这句进行定位即可,传入的参数是网页到屏幕边框的距离

    WebView.SetMargin(10, 10, 10, 10);
    4.Unity调用javascript方法

    如下可直接从Unity调用javascript方法,第一个参数为javascript方法名,第二个参数为传入javascript方法的参数,为字符串类型

    WebMediator.CallJavascript("javascriptMethod", "这里可以传入一个字符串参数");

    5.javascript发消息到Unity

    网页要发送消息到Unity,网页需要引入unity.js(在文章开头的下载地址打包下载),调用unity.callback即可发送消息到Unity,第一个参数为消息名,第二个参数为消息内容(传入一个json,到C#端直接以Hashtable形式取出)

    网页代码

    <html>
    <head>
    <meta http-equiv=Content-Type content="text/html;charset=utf-8">
    <script type="text/javascript" src="unity.js"></script>
    <script type="text/javascript">
    function pushMsg(method){
        var val = document.getElementById("testInput").value;
        unity.callback(method, {'msg':val});
    }
    
    function javascriptMethod(args){
        alert(args);
    }
    </script>
    </head>
    <body>
    <input id="testInput" />
    <input type="button" value="提交A" οnclick="pushMsg('A')" />
    <input type="button" value="提交B" οnclick="pushMsg('B')"/>
    </body>
    </html>

    Unity中取消息需要主动调用PollMessage方法,可写在Update中每帧刷新执行,即可实现实时处理,效果上等同于javascript直接调用了Unity。

    C#代码

        private void ProcessMessages() {
            while (true) {
                // Poll a message or break.
                var message = WebMediator.PollMessage();
                if (message == null) break;
                Debug.Log(message.path);
                switch (message.path)
                {
                    case "A":
                        A.text = message.args ["msg"].ToString();
                        break;
                    case "B":
                        B.text = message.args ["msg"].ToString();
                        break;
                    default:
                        break;
                }
            }
        }
    
        void Update() {
            if (WebMediator.IsVisible()) {
                ProcessMessages();
            }
        }


    展开全文
  • unity3D网页的交互

    2013-07-31 16:18:05
    一开始尝试在unity中直接连接数据库,当时连的xml,然而每次发布成网页后都会出现路径找不到等问题,所以迫不得已采用了unity网页传送数据,网页中处理数据(查询数据库),然后将处理过的数据再反传送给unity,...

    由于项目需要,要求用unity来展示三维场景,并在三维中能够方便的查询数据库等。一开始尝试在unity中直接连接数据库,当时连的xml,然而每次发布成网页后都会出现路径找不到等问题,所以迫不得已采用了unity向网页传送数据,网页中处理数据(查询数据库),然后将处理过的数据再反传送给unity,最终在unity中将其展示(在网页中展示更为灵活)。

    原理很简单:

    1、unity向网页发送数据的函数:Application.ExternalCall("SayHello",gameObject.name),这个函数将调用网页中的SayHello函数,gameObject.name为传递的参数。

    2、网页向unity发送数据的函数:网页中用GetUnity().SendMessage(message, "AcceptName",buildingname)函数来调用unity中的函数,此函数的参数message为unity中的物体,AcceptName为物体上的函数,buildingname为传递的参数。

    网页中的函数如下:

     1functionSayHello(message){//此函数来接收unity中发送出来的message值,并将处理后的数据再发送回unity
     2jQuery.post('../Unity/javascript/DBhelper.ashx',{id:message}, function(data)
     3        {
     4varmsg=JSON.parse(data);//json数据解析
     5varbuildingname = msg[0].Building_name;
     6varbuildingcategory=msg[0].Building_category;
     7varbuildingpic = msg[0].Building_pic;
     8GetUnity().SendMessage(message, "AcceptName",buildingname);//unity中的message物体上的MyFunction函数发送buildingname
     9GetUnity().SendMessage(message,"AcceptCategory", buildingcategory);
    10
    11GetUnity().SendMessage(message,"AcceptImg", buildingpic);
    12       });   
    13}

    此函数将unity中发送的数据message传到DBhelper.ashx中,在DBhelper.ashx中将传递过来的数据进行查询等操作,然后再用GetUnity().SendMessage(message,"AcceptName", buildingname)将处理好的数据buildingname传给unity中的AcceptName函数。

    以下是unity中的脚本,可以实现中文,关于中文的实现由于文章有限,在此不再说明,只说明怎样接收网页中的数据。

     1varchineseSkin : GUISkin;//在此可以选择字体,并设置为中文。建议编辑器设为uft-8
     2
     3varbuildingname:String;//用来接收从网页中传递过来的buildingname
     4varbuildingcategory:String;//用来接收从网页中传递过来的buildingcategory
     5
     6var buildingpic:Texture2D;//用来接收从网页中传递过来的buildingpic
     7var windowRect0 = Rect (20, 20, 250, 200);
     8varenable:boolean;
     9function Awake(){
    10enable = false ;
    11}

    //鼠标按下去时触发的事件
    12functionOnMouseDown () {
    13Application.ExternalCall("SayHello",gameObject.name);// 向网页中的SayHello函数发送gameObject.name数据
    14enable = true;
    15}
    16functionAcceptName(bdname){//用于接收网页中发送回来的数据
    17buildingname=bdname;
    18}
    19functionAcceptCategory(buildingType){//用于接收网页中发送回来的数据
    20buildingcategory=buildingType;
    21}
    22
    23functionAcceptImg(img){

    //读取文件夹下的图片文件
    24var www :WWW = newWWW("http://localhost:1166/Unity/images/"+img+"");
    25yield www;

    //为buildingpic设置纹理
    26buildingpic=www.texture;
    27}

    //绘制GUI元素时触发的事件
    28functionOnGUI(){
    29GUI.skin=chineseSkin;
    30if(enable)
    31{

    //绘制一个窗体,记住第三个参数是方法名字
    32windowRect0 = GUI.Window (0, windowRect0,DoMyWindow, "属性");
    33}
    34}

    //绘制一个窗体,windID是不可缺少的元素,指向窗体的索引值
    35functionDoMyWindow (windowID : int) {
    36GUI.Label(Rect(10,50,80,30),"建筑物名字");
    37GUI.TextField(Rect(100,50,100,30),buildingname);
    38GUI.Label(Rect(10,100,80,30),"建筑物类型");
    39GUI.TextField(Rect(100,100,100,30),buildingcategory);
    40
    41GUI.DrawTexture(Rect(10,150,200,50),buildingpic,ScaleMode.ScaleToFit,true,0);
    42if(GUI.Button(Rect(190,20,50,30),"退出")){
    43enable = false;
    44}
    45GUI.DragWindow (Rect (0,0,10000,10000));
    46}

    //鼠标在上面时触发
    47functionOnMouseOver(){
    48transform.Rotate(0,Time.deltaTime*100,0,Space.World);
    49}

    //鼠标进入时触发
    50functionOnMouseEnter(){
    51renderer.material.color = Color.blue;
    52}

    //鼠标离开时触发
    53functionOnMouseExit(){
    54renderer.material.color =Color.yellow;   
    55}

    这是unity中的脚本,此脚本实现点击物体,弹出物体的属性。

    展开全文
  • 1、Unity3D的游戏引擎是和编辑器集成在一起的,所有它也是一个制作/开发平台。 2、Unity3D是使用JavaScript、C#作为核心脚本语言来驱动事个游戏引擎。 3、平台可以发布Exe执行文件或者打包为可供网页调用的一个独立...

     简介:

    1、Unity3D的游戏引擎是和编辑器集成在一起的,所有它也是一个制作/开发平台。
    2、Unity3D是使用JavaScript、C#作为核心脚本语言来驱动事个游戏引擎。
    3、平台可以发布Exe执行文件或者打包为可供网页调用的一个独立的包文件。
    4、用Unity3D制作的工程具有高度的可移植性,可以在PS xbox360 Android iPhone mac等系统上运行。
    嵌入网页:
    1、用Unity3D实现嵌入网页和Flash插入网页原理完全一致,也是使用ActiveX控件嵌入在网页中。所以和Flash一样,需要安装一个播放器插件(小于3M)。
     
    2、查看页面源码,可以看到如下嵌入部分:
    <object id="UnityObject" classid="clsid:444785F1-DE89-4295-863A-D46C3A781394"width="600" height="450"codebase="http://webplayer.unity3d.com/download_webplayer/UnityWebPlayer.cab#version=2,0,0,0">
             <param name="src" value="MyDataFile.unity3d" />
             <embed id="UnityEmbed" src="MyDataFile.unity3d" width="600" height="450"type="applicationnd.unity" pluginspage="http://www.unity3d.com/unity-web-player-2.x" />
    </object>
    3、和Flash一样,在浏览器中加载3D场景或者读取时的图标进度条都能进行自定义,也可以自定义是否激活是用右键菜单。
     
    数据交互
    1、在Unity3D中调用网页js函数
             如果我们在html中有脚本函数;则在u3d中我们可用使用Application.ExternalCall调用js函数,该方法只适合在Web3D环境下使用。该方法支持基本类型的传递和数组传递,任何类型都会转换成字符串类型使用。
    例子代码:
    Application.ExternalCall("SayHello","The game says hello!);//调用SayHello,传递一个字符串
     
    2、在Unity3D中直接执行一段脚本代码如:
    Application.ExternalEval("if(document.location.host!='unity3d.com'){document.location='http://unity3d.com';}");
     
    3、在js中调用Unity3D函数(传递消息等)
    如果有Unity3D中有一段用JS写的功能函数:
    function MyFunction(param:String)
    {
             Debug.Log(param);
    }
    需要在JS中呼叫这个函数则可以这样写:
    <script type="text/javascript" language="javascript">
    SaySomethingToUnity(document.getElementById("UnityContent").SendMessage("MyObject","MyFunction","Hello fom a web page!"););
    </script>
    这里要注意的是MyObject代表Unity3D中的一个场景名称为MyObject,MyFunction是调用的函数,最后一个字符为传递的参数。
     
    与php,jsp等的表单数据交互
             与php,jsp等的表单数据交互很可能会是今后用到的主要方式,原理是利用form表彰传递数据,下面以php为例来进行说明。
             Unity3D可以实现向某个指定页面发送表单数据然后在php中使用_POST获取传递回来的表彰数据。比如:
    <?php
             $action = $_POST["myform_action"];//定义一个变量$action用来获取页面传递过来的表单数据
             if($action!=""){
                      echo $action;//如果接收到了数据则打印出数据内容
             }
    ?>
    在Unity3D中我们发送数据的代码如下:
    var form = new WWWForm();//定义一个网页表单
    form.AddField("myform_action","Action1");//添加一个表彰字段名称为myform_action内容是action1
    var download = new WWW("www.xxx.com/index.php",form);//发送表单数据到指定网址页面
    假如index.php执行的是数据库/统计操作,我们就可以对传递的数据进行保存读取或者其他操作了。 

    展开全文
  • unity3d网页数据交互的基本原理介绍:  1. u3d是一个3D游戏引擎由于和编辑器集成在一起 所以也可以理解为一个制作/开发平台 2. u3d使用javascript C#作为核心脚本语言 来驱动整个游戏引擎  ...

    unity3d和网页数据交互的基本原理

    介绍: 
    1. u3d是一个3D游戏引擎由于和编辑器集成在一起 所以也可以理解为一个制作/开发平台
    2. u3d使用javascript C#作为核心脚本语言 来驱动整个游戏引擎 
    3. 平台可以发布为Exe执行文件或者打包为供网页调用的一个独立的包文件
    4. u3d制作的工程具有高度的可移植性 可以在ps xbox360 android iphone mac 等系统上运行

    嵌入网页
    1. 实现和Flash插入网页原理完全一致 使用ActiveX控件 嵌入在网页中 所以和Flash一样 需要安装一个播放器插件(<=3M)
                                  


    2. 如果察看页面源代码 则可以看到如下嵌入部分
    <object id="UnityObject" classid="clsid:444785F1-DE89-4295-863A-D46C3A781394"width="600" height="450"codebase="http://webplayer.unity3d.com/download_webplayer/UnityWebPlayer.cab#version=2,0,0,0">
    <param name="src" value="MyDataFile.unity3d" /><embed id="UnityEmbed" src="MyDataFile.unity3d" width="600" height="450"type="application/vnd.unity" pluginspage="http://www.unity3d.com/unity-web-player-2.x" /></object>
    3. 和Flash一样 在浏览器中加载3d场景或者读取时的图标进度条等都能进行自定义 也可以自定义是否激活是用右键菜单

    数据交互


    1. 在unity3d中调用网页js函数
    如我们在html中有脚本函数:

    则在u3d中我们可以写函数来调用js函数如:
    [pre]Application.ExternalCall( "SayHello", "The game says hello!" );[/pre] 
    2. 在unity3d中直接执行一段脚本代码(这也是可行的) 如:
    [pre]Application.ExternalEval([/pre][pre] "if(document.location.host != 'unity3d.com') { document.location='http://unity3d.com'; }"
    绿色部分是一个字符串 也是一段js脚本在u3d可以直接执行一段js脚本

    3. 在js中调用unity3d函数(传递消息等)
    假如在u3d中有一段功能函数(也是用js写的)
    function MyFunction(param : String
    {
    Debug.Log(param);
    }
    则如果需要在js中呼叫这个函数可以这样写:

    <script type="text/javascript" language="javascript">
    <!--function SaySomethingToUnity(
    document.getElementById("UnityContent").SendMessage("MyObject", "MyFunction", "Hello from a web page!");
    -->
    </script>

    唯一要注意的是MyObject代表u3d中的一个物体名称为MyObject ,MyFunction是赋予给这个问题的函数,最后一个字符为传递的参数。如此可以实现调用和数据传递。


    与php,jsp?等的表单数据交互
    这应该是今后会可能用到的主要方式 原理是利用form表单传递数据 php中已经使用过多次 没有问题 jsp中应该同理

    以php为例
    U3d可以用向某个指定页面发送表单数据然后在php中使用_POST获取传递过来的表单数据
    比如我们有一个网页: www.dreamloader.net/index.php
    其页面源文件如下: 
    <?php
    $action=$_POST["myform_action"];//定义一个变量$action用来获取页面传递过来的表单数据
    if ($action!=””){echo$action;}//如果接受到了数据则打印出数据内容
    ?>

    在unity3d中我们发送数据的代码如下:
    varform = newWWWForm();//定义一个网页表单form.AddField( "myform_action", "Action1" );//添加一个表单字段名称为myform_action内容是Action1
    vardownload = newWWW( “www.dreamloader.net/index.php”, form );//发送表单数据到指定网址页面


    假如index.php中执行的是数据库/统计操作 我们就可以对传递的数据进行保存读取或者其他操作了

    展开全文
  • 然后打开Unity的安装目录,找到需要用的class.jar文件,就是封装调用unity引擎的java源码,位置在Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar(安装目录),然后复制这个文件到android工程的...

    首先创建一个android工程,这个很简单就不详细说明了。然后打开Unity的安装目录,找到需要用的class.jar文件,就是封装调用unity引擎的java源码,位置在Unity\Editor\Data\PlaybackEngines\androidplayer\bin\classes.jar(安装目录),然后复制这个文件到android工程的libs目录,系统会自动引用,adt22以下不记得会不会,如果不会的话需要自己设置一下,右键工程

    QQ截图20150515103111

    添加这个文件即可。

    然后把MainAtivity稍微改一下,就是把继承父类改成UnityPlayerActivity,这样就对接上了unity接口,源码如下:

    为了显明观察显示,布局稍微改动了一下。把这个显示在我们的视图上。

    activity_main.xml

    配置清单文件,这个里面的包名要用到后面Unity的

    android基本上就完成了。现在创建一个Unity工程,名字啥的随便取,然后在菜单File->Build Settings->Android->Player Settings

    QQ截图20150515104138QQ截图20150515104308

    最后生成的APK文件我们直接解压,把里面的assets目录下面的data目录复制到我们工程的assets目录下,然后把lib目录下的armeabi-v7a或armeabi一起复制(如果都有的话,只有其中一个就复制一个即可),最后编译我们的程序,运行效果如下:

    device-2015-05-15-104600

    白色是我们的布局容器,蓝色就是unity视图内容了。

    下面继续说下在Unity中调用Andriod的函数,在Unity工程中创建一个C#脚本,直接将它绑定在摄像机中,它用来通知界面打开Activity。如下图所示,利用GUI在屏幕中创建两个按钮,点击按钮打开不同的Activity。

    展开全文
  • Unity3D嵌入winform或者wpf程序,过去大部分使用UnityWebPlayer插件来实现,这个插件其实就是网页上播放unity页游的插件。 但是使用UnityWebPlayer嵌入桌面开发有各种问题,我认为最大的问题是效率问题(加载...
  • 大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。最近博主发现博主的文章被很多的网站(如游戏蛮牛)等非法转载,在转载的过程中博主原来的文章出处和链接均被去掉,更让博主觉得...
  • UniWebView2:适用于Andriod、ios和Mac os,在移动端效果最好。支持WP8,不支持windows桌面系统,包括编辑器状态。 Unity4.x版本是 UniWebViewUnity AssetStore 上的插件:
  • 本文通过一个在Android中展示3D模型的实例,介绍如何将Unity3d以View的形式嵌入到Android应用中。并提供Deom和代码下载。
  • 出处:http://www.cnblogs.com/NuclearBoy/articles/6092221.html写在前面:另百度文库里有一篇好的文章:https://wenku.baidu.com/view/d8be1b183c1ec5da51e27007.html 把Unity3D嵌入winform或者wpf程序,过去大...
  • Unity3D 调用Java,Java调用Unity3D 1。无返回值 AndroidJavaClass fee = new AndroidJavaClass("com.wiker.Test"); fee.CallStatic("print", "Hello", "World"); Java源代码 packagecom.wiker public...
  • [Unity3d]unity与html通信

    2019-07-26 09:54:06
    更多教程请访问: http://dingxiaowei.cn/ ...下面简单谈谈通过Unity3D调用HTML网页的脚本函数,以及通过HTML网页调用Unity3D中的脚本函数。 1.1Unity3D浏览器调用HTML网页中的函数 Unity3D浏览...
  • Unity3D开发的MMORPG游戏服务器和客户端 Unity3D开发的MMORPG游戏服务器和客户端源码,服务端是用PhotonServer开发,全部解压后900多mb。 所以请不要商用,仅限学习使用
  • unity内嵌web

    2020-07-28 23:32:31
    uniwebview支持移动端,zfbrowser支持PC端,有多端需求的同学可以结合设计.
  • 转载自: https://blog.csdn.net/xxdddail/article/details/49890643代码下载: http://download.csdn.net/detail/xxdddail/9277447Unity3D可以C#脚本进行开,使用vstu2013.msi插件,可以实现在VS2013中的调试。...
  • 效果展示:     开篇废话: 我现在所在的Team每周需要一个人给大家介绍一个...由于我在大学里自学过一段时间Unity3D,所以我想介绍的技术就是它,但我现在做的是应用开发,不能做个小
  • unity3d网页数据交互

    2013-05-08 01:24:56
    介绍:  1. u3d是一个3D游戏引擎由于和编辑器集成在一起 所以也可以理解为一个制作/开发平台 2. u3d使用javascript C#作为核心脚本语言 来驱动整个游戏引擎  3. 平台可以发布为Exe执行文件或者打包为供...嵌入网页
  • Unity 3D

    2015-04-26 14:48:03
    Unity 3D  用了很长一段时间Unity 3D ,突然问自己,Unity 3D是什么?我却回答不出来。 我学会了什么,我发现什么也没有学会... Unity 3D 对我来讲,就是一个资源的整合编辑器。对于一个美工来说,它是极好的,...
1 2 3 4 5 ... 20
收藏数 646
精华内容 258
关键字:

unity3d 嵌入网页 源码