我们的游戏选择角色的时候需要在2d GUI的上层显示3d模型,默认3d模型是显示在2d GUI下面的,所以需要另外创建一个Camera,并且把新建的Camera 设置 target 到 RenderTexture,然后把这个RenderTexture显示到GUI上就行了。
代码如下:
Create Camera:
_myObject = new GameObject(_Name, typeof(Camera), typeof(Skybox));
_myCamera = _myObject.camera;
_myCamera .depth = 2;
_myCamera .clearFlags = CameraClearFlags.Skybox;
_myCamera .backgroundColor = Color.clear;//Color.black;
_myCamera .nearClipPlane = 0.3f;
_myCamera .fieldOfView = 60;
_myCamera .orthographicSize = 100.0f;
Create RenderTexture:
private static void InitTexture(int with, int height)
{
// _myTexture = new RenderTexture(with, height, 2);
_myTexture
= RenderTexture.GetTemporary(with, height, 0, RenderTextureFormat.ARGB32);
_myTexture
.name = "storyTexture" + _storyObject.GetInstanceID();
_myTexture
.isPowerOfTwo = false;
_myTexture
.targetTexture = _storyTexture;
}
Draw RenderTexture:
//GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), _storyTexture,ScaleMode.StretchToFill);
GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), _storyTexture,ScaleMode.ScaleToFit);
移动端有一些需要注意的地方:
1、创建RenderTexture的时候,如果直接new到iphone上背景就是黑的,晚上找到解决办法如下:
When setting up the Camera object, a RenderTexture is needed as the targetTexture for rendering. If you use a dynamically created Camera, you have one by default whose depth is 24. But it seems iOS devices only support depth = 0, so there are some problems.
To walk around, add a statement like this:
myCamera.targetTexture = RenderTexture.GetTemporary(myWidth, myHeight, 0, myFormat);
where the third parameter is the depth of the RenderTexture.
2、把RenderTexture画到屏幕上的时候,如果选择StretchToFill,手机上就会,需要选择ScaleToFit
MDCC移动开发者大会已经顺利落下帷幕,作为特色活动之一的“创新应用展”吸引了众多优秀的开发团队和应用作品。通过对参展应用的产品创新性、设计、性能,参会者对现场演示的反馈以及专家推荐和用户评论等方面,我们最后从30个入围作品中评选出了5个年度最佳应用和2个人气应用。
我们将邀请获奖团队代表,通过一对一访谈的方式(套用硅谷流行的会议形式:Fireside Chat),了解他们成功背后的故事。访谈实录将发布在CSDN网站,并收录在《程序员》杂志创新应用专题中。
获奖名单及新闻公告请参见:
http://www.csdn.net/article/2012-10-31/2811307-mdcc-app-lounge
访谈嘉宾:
- 李天放:课程格子创始人,前美国微软工程师
- 王然:课程格子联合创始人,前创新工场投资分析师
- 郭家:虫洞软件联合创始人&运营总监
- 丁然:“斑马骑士”团队,技术总监
- 王占强:“斑马骑士”团队,设计总监
- 德义:3000GAME工作室创始人,作品:被错过的天堂
- 徐磊:布丁移动创始人- 张乐然:布丁移动UI设计师
CSDN出席嘉宾:
- CSDN创始人:蒋涛(@蒋涛CSDN)
- CSDN、程序员杂志编辑团队(@CSDN张宁)
- CMDN移动开发者社区负责人(@CMDN炫姐姐)
精彩话题抢先预告:
对话#1:在工具+社交中寻找机会(课程格子,计划FM团队)
想知道非诚勿扰男嘉宾,是如何放弃美国车房,自断后路,投身国内火热的移动互联网创业大潮?又是怎样带领团队,在丽江封闭3个星期,头脑风暴出课程格子?想知道一个简单的工具应用,和一个简单的社交应用,如何微妙的结合,成就了这一款创新的应用吗?课程格子团队派出了帅哥+美女组合,将和大家一起探讨社交类应用的新出路、新机会。
对话#2:草根团队打造的“大”应用(虫洞语音助手,光年团队)
曾经获得某个大赛“最佳团队奖”的虫洞团队,自称自己团队的人“真的很踏实”,“真的很辛苦”,“真的愿意为大家共同的那个目标付出所有”。因为坚持小团队也能做语音工具应用,在被创新工场投资经理拒绝后,他们仍然坚持梦想,齐心协力的执着于一件事:解决手机上获取信息不便的问题。虫洞的团队,如何突破种种束缚,攻克智能问答、语音识别等一系列的难题?
对话#3:小团队打造小游戏,从千军万马中突围(被错过的天堂,3000GAME工作室)
做小游戏的小团队很多,3、5个人,比拼大游戏大制作大团队,没点“小聪明”还真不行。这一款荣登台湾地区App Store榜首的小游戏,界面画风新奇,情节设计诡异,程序设计出色。坚持极简设计,创新地在传统解密游戏中加入了多重结局以及多模式转换玩法,巧妙的在众多大团队、大创作、大手笔的游戏作品中脱颖而出。最有看点的是,团队的激情一定能够感染到你,让你爱上这一款色彩有些灰暗的小游戏。
对话#4:选择成就精品(鲸鱼岛的冬天,斑马骑士团队)
“跨界和混搭”的团队,执着的梦想,造就了这款精致美丽、极富动感的儿童交互游戏,向我们展示了如何通过声控、手势控制和Stage 3D图形渲染等技术,将一个童话世界变得栩栩如生的实例。我们今天将从技术和设计两个角度,剖析这款开发周期长达3个月产品,挖掘产品背后的这个混搭团队的故事。
对话#5:设计+运营=成功的生活类应用(布丁电影票,布丁移动团队)
布丁是一个很特别的团队,无论是CEO,产品经理,还是设计师,还是程序员,都透着那么一股文艺范儿。他们做的这一款新应用,细节之处彰显了王子的气质。这一次我们将淘出布丁的一些从未公开的早期创作稿,了解一款设计优良的产品,是如何经历一次次的精修,而形成自己卓尔不群的气质。
活动信息:
时间:11月26日(周一) 晚 (5:30pm~9:00pm)
地点:北京福泰酒店公寓(朝阳区望京广顺北大街33号6号楼,福码大厦西侧)一层纽约厅
报名:http://hui.csdn.net/MeetingInfo.aspx?MID=174
活动提供商务套餐,50元/人,含(一荤两素,汤,水果,红茶)。就餐时间:6:00~6:30,如有需要,请提前报名预订,以便我们安排酒店备餐。在线预订,现场缴费,
活动安排:
5:30pm~6:00pm 嘉宾签到、颁奖礼
6:00pm~6:30pm 与会者签到、晚餐、社交活动
6:30pm~9:00pm 访谈、对话、问答
往届CMDN Club活动:http://cmdn.csdn.net/
ECSHOP的缓存存放在templates/caches/文章夹下,时间长了这个文件夹就会非常庞大,拖慢网站速度。还有很多情况我们不需要他的缓存。本文介绍禁用ECSHOP缓存的方法。
ECSHOP的缓存有两部分,一部分是SMARTY的页面缓存;另一部分是SQL查询结果的缓存。这两部分都是保存在templates/caches/文件夹下。只要我们分别关闭这两个功能,就可以完全禁用ECSHOP的缓存。当然你也可以根据自己的需要关闭其中某一个。
1.关闭SMARTY的缓存:
打开includes/cls_template.php,找到下面一段
if (file_put_contents($this->cache_dir . ‘/’ . $cachename . ‘.php’, ‘<?php exit;?>’ . $data . $out) === false)
{
trigger_error(’can\’t write:’ . $this->cache_dir . ‘/’ . $cachename . ‘.php’);
}
将这一部分注释掉即可,改成
/*
if (file_put_contents($this->cache_dir . ‘/’ . $cachename . ‘.php’, ‘<?php exit;?>’ . $data . $out) === false)
{
trigger_error(’can\’t write:’ . $this->cache_dir . ‘/’ . $cachename . ‘.php’);
}
*/
2.关闭SQL查询结果缓存
打开includes/cls_mysql.php
找到
var $max_cache_time=3600;//最大的缓存时间,以秒为单位
改为
var $max_cache_time=0;//最大的缓存时间,以秒为单位
如何限制或禁用ECShop缓存呢?按道理只要ftp登录到主机空间服务器,清除“templates/caches”文件夹下的缓存文件,但比较安全稳妥的办法是进入ecshop网店后台点击右上角“清除缓存”按钮。还是完全禁用ecshop的缓存功能。
一、禁用ecshop部分数据表缓存。
ecshop里caches文件夹缓存文件包括sql查询结果缓存和SMARTY模板页面缓存。如果访问网站的用户一多,这些临时的缓存数据都被保持在ECshop的“templates/caches”文件夹下。数据缓存对提高网店速度有一定作用,但缓存文件一多也就过犹不及。有人说只对favourable_activity,goods_activity这2个表禁用缓存即可。
打开include/init.php,找到
修改为
PHP代码二、完全禁用ecshop缓存
定期要登录ecshop网店后台清除缓存文件,对于懒人来说,这也挺嫌麻烦的。那干脆完全禁用ecshop缓存吧。参考小虫的禁用echsop缓存文章,小虫的具体代码是2.6.0左右的版本。2.7的ecshop禁用缓存修改方法类似:
1. 用editplus打开include/cls_template.php,把下面代码注释掉:
PHP代码2.用editplus打开include/cls_mysql.php,找到 max_cache_time = 300,把300改为0即可
三、templates/compiled下的文件是否可以清空?
templates/compiled下的文件是模板编译后文件,可以清空。当用户浏览网店后又会重新生成。templates文件夹下的主要是caches里缓存文件太多,你可以定期清空或完全禁用ecshop缓存。
----------------------------------------------
关于清除缓存的建议!! 发现现在的清除缓存做的比较粗!和之前没大变化啊!和2.0.5一样.只要后台随便一个修改的操作,整个缓存就都没了!用的都是$smarty->clear_all_cache();
缺点:如果我有10万商品,:),而且都被浏览过,我后台一个操作就要清楚15万多缓存文件:)似乎极限了点
只是举例!!,希望ECSHOP更加完美而已!
smarty里面不是有这个函数么?
clear_cache(),我小修改了下,增加了可以指定删除某个目录下的缓存,用处是:可方便的删除商品的分类缓存!
2.0.5上我是这么改的,另外在根目录建立一个缓存目录templates_caches,里面建立article,article_cat,goods,goods_cat,4个文件夹分别放文章内容,文章列表,商品内容,商品列表的缓存
例子:对商品,文章部分的修改
前台init.php和后台init.php加入如下代码,我为了方便直接加在config.php里面了
修改后台,商品单独修改的地方只删除这个商品内容的缓存
只要有修改操作就删除商品分类缓存和首页缓存!加入如下
$smarty->clear_cache(null, null, null, null, $cache_dir_goods_cat);//zouql:删除商品目录缓存,默认缓存时间
$smarty->clear_cache('goods.html', $goods_id, null, null, $cache_dir_goods);//zouql:删除商品缓存,默认缓存时间
还有广告管理等等等等等等等等地方要改!
前台用户发表评论后自动删除本商品缓存等等..........
function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null, $cache_dir = null)
{
if (!isset($cache_dir))
$cache_dir = $this->cache_dir;
if (!isset($compile_id))
$compile_id = $this->compile_id;
if (!isset($tpl_file))
$compile_id = null;
$_auto_id = $this->_get_auto_id($cache_id, $compile_id);
if (!empty($this->cache_handler_func)) {
return call_user_func_array($this->cache_handler_func,
array('clear', &$this, &$dummy, $tpl_file, $cache_id, $compile_id, $exp_time));
} else {
$_params = array('auto_base' => $cache_dir,
'auto_source' => $tpl_file,
'auto_id' => $_auto_id,
'exp_time' => $exp_time);
require_once(SMARTY_CORE_DIR . 'core.rm_auto.php');
return smarty_core_rm_auto($_params, $this);
}
}