筑梦创想:登陆钓鱼岛Unity3d工程文件发布啦!包括后台程序






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

看看网站最终的效果:

002.jpg 

下面是制作过程的截图:

001.jpg 

刷基础地形

002.jpg 

构建自然景貌(包括地表纹理、植被、海水、天空、光晕等等),当然不忘放一张大面国旗还有刻上钓鱼岛的石碑!

003.jpg 

网站加载中

004.jpg 

能看到基本的效果了

Unity3d工程源文件的下载地址:

http://www.rayfile.com/files/a3263197-09f9-11e2-8c30-0015c55db73d/  【貌似不能下载,或者说没敢下........】

“登陆钓鱼岛”网站根目录下的文件

 网站文件.rar (1.65 MB, 下载次数: 169) 

石碑的max源文件的下载地址(感谢陈健恒同学的帮助):

 石碑.rar (547.01 KB, 下载次数: 76) 

生成数据库的SQL语句:

  1. DROP TABLE IF EXISTS `user`;
  2. CREATE TABLE `user` (
  3. `time` datetime DEFAULT NULL,
  4. `text` text,
  5. `name` text,
  6. `id` varchar(255) NOT NULL DEFAULT '',
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
复制代码

Unity3d生成GUI和完成数据交互的源代码:

  1. using UnityEngine;
  2. using System.Collections;

  3. public class gui : MonoBehaviour 
  4. {
  5. // Use this for initialization
  6. void Start () 
  7. {

  8. }

  9. // Update is called once per frame
  10. void Update () {

  11. }

  12. private bool _isShow = true;
  13. private bool _isMsgShow = false;

  14. void OnGUI()
  15. {
  16. if(this._isShow == true)
  17. {
  18. GUI.Window(0, new Rect(Screen.width / 2 - 150, Screen.height / 2 - 100, 300, 200), MyWindowFunction, "欢迎登陆钓鱼岛");
  19. }

  20. if(GUI.Button(new Rect(10, 10, 100, 25), "登岛情况"))
  21. {
  22. Application.ExternalEval("window.open('http://baodiao.sinaapp.com/herolist.php')");
  23. }
  24. }

  25. public string name = "";
  26. public string text = "";

  27. void MyWindowFunction(int id)
  28. {
  29. GUI.Label(new Rect(20, 40, 100, 200), "你的名字 (10):");
  30. GUI.Label(new Rect(20, 70, 100, 200), "保钓誓言 (30):");

  31. name = GUI.TextField(new Rect(120, 40, 100, 20), name, 10);
  32. text = GUI.TextArea(new Rect(120, 70, 150, 60), text, 30);

  33. if(GUI.Button(new Rect(120, 150, 70, 25), "登 岛"))
  34. {

  35. if(name.Length > 0 && text.Length > 0)
  36. {
  37. Application.ExternalEval("doRequestUsingPOST(" + "\"" + name + "\",\"" + text + "\")");

  38. this._isShow = false;
  39. }
  40. else
  41. {
  42. _isMsgShow = true;
  43. }
  44. }

  45. if(this._isMsgShow == true)
  46. {
  47. GUI.Label(new Rect(200, 155, 150, 25), "请填写完整!");
  48. }
  49. }
  50. }
复制代码

js与Unity Player通讯的关键代码:

  1. <script type="text/javascript" src="http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js"></script>
  2. <script>
  3. var xmlHttp;

  4. function createXMLHttpRequest()
  5. {
  6. if(window.ActiveXObject)
  7. {
  8. xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
  9. }
  10. else
  11. {
  12. if(window.XMLHttpRequest)
  13. {
  14. xmlHttp = new XMLHttpRequest(); 

  15. }
  16. }

  17. var ff = "aa=" + "aa" + "&" + "bb=" + "bb" + "&" + "cc=" + "cc";

  18. function doRequestUsingPOST(name, text)
  19. {
  20. createXMLHttpRequest();

  21. var url = "showme.php";
  22. var queryString = "name=" + name + "&" + "text=" + text;

  23. xmlHttp.open("POST", url, true);
  24. xmlHttp.onreadystatechange = handleStateChange;
  25. xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;");
  26. xmlHttp.send(queryString);
  27. }

  28. function handleStateChange()
  29. {
  30. if(xmlHttp.readyState == 4)
  31. {
  32. //alert(xmlHttp.responseText);
  33. //alert(xmlHttp.responseText);
  34. alert("欢迎登陆钓鱼岛!钓鱼是中国的!");
  35. }
  36. }
  37. </script>
  38. <script type="text/javascript">
  39. <!--
  40. function GetUnity() {
  41. if (typeof unityObject != "undefined") {
  42. return unityObject.getObjectById("unityPlayer");
  43. }
  44. return null;
  45. }
  46. if (typeof unityObject != "undefined") {
  47. unityObject.embedUnity("unityPlayer", "WebPlayer.unity3d", 960, 600);

  48. }
  49. -->
  50. </script>
复制代码

PHP访问数据库的关键代码:
  1. <?php

  2. $name = $_POST['name'];
  3. $text = $_POST['text'];

  4. echo $name;
  5. echo $text;

  6. //用户名  : SAE_MYSQL_USER
  7. //密  码 : SAE_MYSQL_PASS
  8. //主库域名 : SAE_MYSQL_HOST_M
  9. //从库域名 : SAE_MYSQL_HOST_S
  10. //端  口 : SAE_MYSQL_PORT
  11. //数据库名 : SAE_MYSQL_DB

  12. // 获取表单的用户名与密码
  13. $user_name = $_POST['name'];
  14. $user_password = $_POST['text'];

  15. $host = SAE_MYSQL_PORT;
  16. $user = SAE_MYSQL_USER;
  17. $password = SAE_MYSQL_PASS;

  18. $db_name = SAE_MYSQL_DB;
  19. $tb_name = "user";

  20. // 连接数据库服务器
  21. $connect=mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);

  22. if(!$connect)
  23. {
  24.         die("服务器连接失败!".mysql_error()); 
  25. }
  26. else
  27. {
  28.        echo "欢迎登陆钓鱼岛!"; 
  29. }

  30. // 连接数据库
  31. mysql_select_db($db_name, $connect) or die("数据库连接失败!".mysql_error());

  32. srand((double)microtime()*1000000000);

  33. $rand_number= rand();

  34. srand((double)microtime()*1000000000);

  35. $rand_number = $rand_number * 1000 + rand();

  36. // 在数据库中添加记录
  37. $mysql_command = "insert into ".$tb_name."(id, name, text, time) values($rand_number, '$_POST[name]', '$_POST[text]', now())";

  38. $result = mysql_query($mysql_command) or die("插入失败".mysql_error());

  39. ?>
复制代码

团队简介
我们团队命名为“筑梦创想”,寓意“筑梦天下,创想未来”。筑梦创想是一支富有素质的互动应用开发团队,我们提供创意互动应用的定制服务,这体现着我们致力于使艺术与科学完美融合的核心理念。于此同时,我们还以人机交互技术为核心着力于Web3d、虚拟现实、增强现实方面技术的研发。

联系方式
E-mail: gsh0913@qq.com
QQ:264965161
新浪微博: http://weibo.com/mongcc
团队网站: www.mongtx.com

PS:“登陆钓鱼岛”网站从构思到完成发布所用时间不足3个小时,这样庞大的工作量通过这样短的时间去完成中途难免会有错漏,许多功能实现的方式也不可能是用最完善的方法,安全性基本上没有考虑,但 本项目却为大家展示了一个Unity3d网页应用的完整开发解决方案 ,具有相当的参考意义。希望大家能够继续支持我们的工作,如有问题可以通过以上的联系方式与我们联系,我们非常欢迎大家的访问与交流,谢谢!

同样欢迎大家关注我的个人微博  http://weibo.com/tinya0913






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值