两个引擎思路设计是不一样的:
Unreal注重的是工业化流程, 强调整体性, 官方性 所以你会发现Unreal很少会有那么多的插件和扩展(普及程度是最大原因, 但还是和设计有关系)
Unity3D的思路就是全脚本化, 让大家来给它做各种Mod, 可以说是用互联网思想来做引擎 有了流量和用户, 普及就不是啥问题, 更可以说自己的哲学是正确的
题主所说的, 用带反射的语言来做 Unity3D就是这么完成的编辑器 可以说, 编辑器本身完完全全都是用引擎本体写出来的 但引擎本体本没有编辑器支持
而虚幻呢, 由于老的一些架构和思想下, 还是使用引擎本体糅合编辑器的功能, 通过宏控制来制作 但多年的编写经验证明这么做其实也还好 这是用C++做脚本这点 我也感觉不大好, 至少来说, 开发效率和普及就受到很严重的牵制
另外我觉得, Unreal这种整合方式的思想和Unity3D这种MOD开发的思想肯定会长期存在的, 各有各的好处 有的人喜欢完善, 有的人喜欢自定义 就像Windows和Linux一样
Unity3D和网页数据交互的基本原理
简介:
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://webplayerunity3dcom/download_webplayer/UnityWebPlayercab#version=2,0,0,0">
<param name="src" value="MyDataFileunity3d" />
<embed id="UnityEmbed" src="MyDataFileunity3d" width="600" height="450"type="application/vndunity" pluginspage="http://wwwunity3dcom/unity-web-player-2x" />
</object>
3、和Flash一样,在浏览器中加载3D场景或者读取时的图标进度条都能进行自定义,也可以自定义是否激活是用右键菜单。
数据交互
1、在Unity3D中调用网页js函数
如果我们在html中有脚本函数;则在u3d中我们可用使用ApplicationExternalCall调用js函数,该方法只适合在Web3D环境下使用。该方法支持基本类型的传递和数组传递,任何类型都会转换成字符串类型使用。
例子代码:
ApplicationExternalCall("SayHello","The game says hello!);//调用SayHello,传递一个字符串
2、在Unity3D中直接执行一段脚本代码如:
ApplicationExternalEval("if(documentlocationhost!='unity3dcom'){documentlocation='http://unity3dcom';}");
3、在js中调用Unity3D函数(传递消息等)
如果有Unity3D中有一段用JS写的功能函数:
function MyFunction(param:String)
{
DebugLog(param);
}
需要在JS中呼叫这个函数则可以这样写:
<script type="text/javascript" language="javascript">
SaySomethingToUnity(documentgetElementById("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();//定义一个网页表单
formAddField("myform_action","Action1");//添加一个表彰字段名称为myform_action内容是action1
var download = new WWW("wwwxxxcom/indexphp",form);//发送表单数据到指定网址页面
假如indexphp执行的是数据库/统计操作,我们就可以对传递的数据进行保存读取或者其他操作了。
欢迎分享,转载请注明来源:表白网
评论列表(0条)