http://bbs.9ria.com/thread-151949-1-1.html
经过一个多星期的整理,现在我们将公开“登陆钓鱼岛”网站的所有源文件以供大家学习和交流,其中包括前端的Unity3d工程文件,网页的js代码,PHP后台还有生成数据库的SQL代码,通过这些源文件,大家将可以更加深入地了解到Unity3d的网络通讯机制,其中包括Unity Player与网页js的通讯,AJAX技术,PHP访问数据等等。由于“登陆钓鱼”是部署与SAE上的一个应用,大家从源码里面还能够了解到如何在云平台上部署应用。
原帖链接:
大家齐上钓鱼岛,Unity3d虚拟漫游支持保钓行动
登岛地址:
http://baodiao.sinaapp.com/baodiao.html
登岛情况:
http://baodiao.sinaapp.com/herolist.php
看看网站最终的效果:
下面是制作过程的截图:
刷基础地形
构建自然景貌(包括地表纹理、植被、海水、天空、光晕等等),当然不忘放一张大面国旗还有刻上钓鱼岛的石碑!
网站加载中
能看到基本的效果了
Unity3d工程源文件的下载地址:
http://www.rayfile.com/files/a3263197-09f9-11e2-8c30-0015c55db73d/ 【貌似不能下载,或者说没敢下........】
“登陆钓鱼岛”网站根目录下的文件:
网站文件.rar (1.65 MB, 下载次数: 169)
石碑的max源文件的下载地址(感谢陈健恒同学的帮助):
石碑.rar (547.01 KB, 下载次数: 76)
生成数据库的SQL语句:
- DROP TABLE IF EXISTS `user`;
- CREATE TABLE `user` (
- `time` datetime DEFAULT NULL,
- `text` text,
- `name` text,
- `id` varchar(255) NOT NULL DEFAULT '',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
复制代码
Unity3d生成GUI和完成数据交互的源代码:
- using UnityEngine;
- using System.Collections;
-
- public class gui : MonoBehaviour
- {
- // Use this for initialization
- void Start ()
- {
-
- }
-
- // Update is called once per frame
- void Update () {
-
- }
-
- private bool _isShow = true;
- private bool _isMsgShow = false;
-
- void OnGUI()
- {
- if(this._isShow == true)
- {
- GUI.Window(0, new Rect(Screen.width / 2 - 150, Screen.height / 2 - 100, 300, 200), MyWindowFunction, "欢迎登陆钓鱼岛");
- }
-
- if(GUI.Button(new Rect(10, 10, 100, 25), "登岛情况"))
- {
- Application.ExternalEval("window.open('http://baodiao.sinaapp.com/herolist.php')");
- }
- }
-
- public string name = "";
- public string text = "";
-
- void MyWindowFunction(int id)
- {
- GUI.Label(new Rect(20, 40, 100, 200), "你的名字 (10):");
- GUI.Label(new Rect(20, 70, 100, 200), "保钓誓言 (30):");
-
- name = GUI.TextField(new Rect(120, 40, 100, 20), name, 10);
- text = GUI.TextArea(new Rect(120, 70, 150, 60), text, 30);
-
- if(GUI.Button(new Rect(120, 150, 70, 25), "登 岛"))
- {
-
- if(name.Length > 0 && text.Length > 0)
- {
- Application.ExternalEval("doRequestUsingPOST(" + "\"" + name + "\",\"" + text + "\")");
-
- this._isShow = false;
- }
- else
- {
- _isMsgShow = true;
- }
- }
-
- if(this._isMsgShow == true)
- {
- GUI.Label(new Rect(200, 155, 150, 25), "请填写完整!");
- }
- }
- }
复制代码
js与Unity Player通讯的关键代码:
- <script type="text/javascript" src="http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js"></script>
- <script>
- var xmlHttp;
-
- function createXMLHttpRequest()
- {
- if(window.ActiveXObject)
- {
- xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
- }
- else
- {
- if(window.XMLHttpRequest)
- {
- xmlHttp = new XMLHttpRequest();
- }
- }
- }
-
- var ff = "aa=" + "aa" + "&" + "bb=" + "bb" + "&" + "cc=" + "cc";
-
- function doRequestUsingPOST(name, text)
- {
- createXMLHttpRequest();
-
- var url = "showme.php";
- var queryString = "name=" + name + "&" + "text=" + text;
-
- xmlHttp.open("POST", url, true);
- xmlHttp.onreadystatechange = handleStateChange;
- xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
- xmlHttp.send(queryString);
- }
-
- function handleStateChange()
- {
- if(xmlHttp.readyState == 4)
- {
- //alert(xmlHttp.responseText);
- //alert(xmlHttp.responseText);
- alert("欢迎登陆钓鱼岛!钓鱼是中国的!");
- }
- }
- </script>
- <script type="text/javascript">
- <!--
- function GetUnity() {
- if (typeof unityObject != "undefined") {
- return unityObject.getObjectById("unityPlayer");
- }
- return null;
- }
- if (typeof unityObject != "undefined") {
- unityObject.embedUnity("unityPlayer", "WebPlayer.unity3d", 960, 600);
-
- }
- -->
- </script>
复制代码
PHP访问数据库的关键代码:
- <?php
-
- $name = $_POST['name'];
- $text = $_POST['text'];
-
- echo $name;
- echo $text;
-
- //用户名 : SAE_MYSQL_USER
- //密 码 : SAE_MYSQL_PASS
- //主库域名 : SAE_MYSQL_HOST_M
- //从库域名 : SAE_MYSQL_HOST_S
- //端 口 : SAE_MYSQL_PORT
- //数据库名 : SAE_MYSQL_DB
-
- // 获取表单的用户名与密码
- $user_name = $_POST['name'];
- $user_password = $_POST['text'];
-
- $host = SAE_MYSQL_PORT;
- $user = SAE_MYSQL_USER;
- $password = SAE_MYSQL_PASS;
-
- $db_name = SAE_MYSQL_DB;
- $tb_name = "user";
-
- // 连接数据库服务器
- $connect=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
-
- if(!$connect)
- {
- die("服务器连接失败!".mysql_error());
- }
- else
- {
- echo "欢迎登陆钓鱼岛!";
- }
-
- // 连接数据库
- mysql_select_db($db_name, $connect) or die("数据库连接失败!".mysql_error());
-
- srand((double)microtime()*1000000000);
-
- $rand_number= rand();
-
- srand((double)microtime()*1000000000);
-
- $rand_number = $rand_number * 1000 + rand();
-
- // 在数据库中添加记录
- $mysql_command = "insert into ".$tb_name."(id, name, text, time) values($rand_number, '$_POST[name]', '$_POST[text]', now())";
-
- $result = mysql_query($mysql_command) or die("插入失败".mysql_error());
-
- ?>
复制代码
团队简介
我们团队命名为“筑梦创想”,寓意“筑梦天下,创想未来”。筑梦创想是一支富有素质的互动应用开发团队,我们提供创意互动应用的定制服务,这体现着我们致力于使艺术与科学完美融合的核心理念。于此同时,我们还以人机交互技术为核心着力于Web3d、虚拟现实、增强现实方面技术的研发。
联系方式
E-mail:
gsh0913@qq.com
QQ:264965161
新浪微博:
http://weibo.com/mongcc
团队网站:
www.mongtx.com
PS:“登陆钓鱼岛”网站从构思到完成发布所用时间不足3个小时,这样庞大的工作量通过这样短的时间去完成中途难免会有错漏,许多功能实现的方式也不可能是用最完善的方法,安全性基本上没有考虑,但
本项目却为大家展示了一个Unity3d网页应用的完整开发解决方案
,具有相当的参考意义。希望大家能够继续支持我们的工作,如有问题可以通过以上的联系方式与我们联系,我们非常欢迎大家的访问与交流,谢谢!
同样欢迎大家关注我的个人微博
http://weibo.com/tinya0913