Unity3d面试6
1,如何避免点击UI按钮时穿透,同时触发了相同位置场景模型的点击事件的情况?(NGUI)
1,如何避免点击UI按钮时穿透,同时触发了相同位置场景模型的点击事件的情况?(NGUI 判断 是否点击到UI)
答:1,通过射线分层处理,显示层分为不同的Layer,用UICamera发射一条射线并脚本里设置他的响应事件的层。
2,在高版本的NGUI中,UICamera中有一个变量isOverUI,这个值为真时表示点击到了UI,反之就是没有。
2,切换场景时,如何让背景音乐持续播放,而不是重新播放?
答:1,使用DontDestroyOnLoad()方法挂载一个音乐组件,当然这个方法也可以保存一些全局游戏脚本。
但是使用时避免重复调用,可以用判断的方式来调用或者销毁但是不是很好,最好的方式是写个
静态全局的单例类,在游戏初首次进入时绑定这个脚本,这样这个方法永远只会走一遍。
public static Global instance; static Global()
{
GameObject go = new GameObject("Globa");
DontDestroyOnLoad(go);
instance = go.AddComponent<Global>();
} public void DoSomeThings()
{
Debug.Log("DoSomeThings");
} void Star()
{
Debug.Log("Start");
}
3,如何实现游戏存档和读档的功能?
答:1,Unity提供了一个用于本地持久化保存与读取的类——PlayerPrefs。工作原理非常简单,以键值对
的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。
PlayerPrefs类支持3中数据类型的保存和读取,浮点型,整形,和字符串型。
分别对应的函数为:这些函数的用法基本一致使用Set进行保存,使用Get进行读取
SetInt();保存整型数据;
GetInt();读取整形数据;
SetFloat();保存浮点型数据;
GetFlost();读取浮点型数据;
SetString();保存字符串型数据;
GetString();读取字符串型数据;
2,XML,sql,txt等配置文件都可以实现存读等功能,PlayerPrefs自带的类只能实现简单的存取功能。
XML存档参考http://blog.sina.com.cn/s/blog_471132920101d3kh.html。
4,什么是协同程序?请举一个游戏中应用协程的例子。
答:Unity的协程系统是基于C#的一个简单而强大的接口 ,IEnumerator,它允许你为自己的集合类型编写枚举器。
1,所谓协同,就是在主程序运行的时间同时开启另外一段逻辑处理,来协同当前程序的执行,
当你在StartCoroutine的函数体里处理一段代码时,利用yield语句等待执行结果,这期间不影响主程
序的继续执行,可以协同工作。
2,在游戏中游戏开始前的倒计时就可以用到协同程序,网络游戏的加载进度,游戏中的顺序控制等。
下面举个计时的例子,方法的状态被存储了,这使得方法中定义的这些变量都会保存它们的值,即使是在不同的帧中
IEnumerator CountSeconds()
{
int seconds = 0; while(true)
{
for(float timer = 0; timer < 1; timer += Time.deltaTime)
Yield return 0; seconds++;
Debug.Log(seconds +" seconds have passed since the Coroutine started.");
}
}
5,什么是游戏框架?使用框架的好处是什么?
答:1,游戏框架是比较上层的封装,是一套快速搭建游戏的代码结构。
2,使用游戏框架开发能节约工程时间,易维护,易扩展,易阅读开发,可复用。
选择框架和使用框架是控制框架的基础。
6,如何在Unity中播放视频?
答:1,首先下载安装Quicktime ,U3D承认的视格式为.mov, .mpg, .mpeg, .mp4, .avi, .asf格式。
2,创建一个对象,使用对象拖拽的形式为Mov Texture对象赋值,之后就可以在脚本中使用它了。
<span style="color:#0000ff;">public class Test: MonoBehaviour
{ //电影纹理
public MovieTexture movTexture; void Start()
{
//设置当前对象的主纹理为电影纹理
renderer.material.mainTexture = movTexture;
//设置电影纹理播放模式为循环
movTexture.loop = true;
} void OnGUI()
{
if(GUILayout.Button("播放/继续"))
{
//播放/继续播放视频
if(!movTexture.isPlaying)
{
</span><span style="color:#ff0000;"> movTexture.Play();</span><span style="color:#0000ff;">
} } if(GUILayout.Button("暂停播放"))
{
//暂停播放
</span><span style="color:#ff0000;"> movTexture.Pause();</span><span style="color:#0000ff;">
} if(GUILayout.Button("停止播放"))
{
//停止播放
</span><span style="color:#ff0000;">movTexture.Stop();</span><span style="color:#0000ff;">
}
}
}</span>
3,另一种是看MOMO帖子学来的,用GUI的方式,直接调用DrawTexture()。程序参考MOMO帖子
http://www.xuanyusong.com/archives/1019
7,跑酷游戏的无尽关卡是如何生成的?
答:设计多种场景块,加载到对象池,对象缓存复用,根据游戏内容制定随即组合的规则,然后根据规则
调用不同的场景块。例如有的场景是特定场景。用量化的方法定义难度。
8,如何增强ARPG Action Role Playing Game 游戏的打击感?
答:1,从美术资源上看,不管是2D还是3D角色的动作流畅度跟动画的合理性都能提高游戏的打击感。
2,游戏中角色的技能或者特定动作加上拖尾效果,多一些技能特效,画面扭曲效果。被打击方的状态控制。
3,相机,也就是主视角可以增加震动效果,镜头的一些特效,例如主角的健康状态显示等。
4,音效的增加,音效是非常非常重要的一个选项。
5,设备上的体现,理由手机或者游戏手柄的震动。
9,游戏慢镜头回放功能的实现思路?如足球游戏中的精彩镜头回放。
答:1,直接录屏将整个动画保存出mp4格式进行压缩,如果是PC端的话找一些录屏插件,移动端也有插件不过好像
都不支持视频保存,记录回放插件EzReplayManager,EveryPlay等移动端插件都比较好用
2,状态记录同步,记录每一帧所有角色状态,包括位置,旋转等,这种方式代码比较容易实现,
文件量会比较大,3分钟视频,一秒钟30帧,需要36030 = 5400帧如果每个角色每一帧都进行
记录至少要3M以上,如果角色少做一些简单的优化比如,只有发生修改的时候才记录会明显的
降低文件量,但是对于移动端流量还是很有压力。
10,LOD技术是什么?优缺点是?
答:1,LOD是Levels of Detail的简称,译为多细节层次。LOD技术指根据物体模型的节点在显示环境中所处的位置
和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
一个有关于LOD的插件Mesh Baker LOD 1.4
2,LOD的优点可以根据距离动态地选折渲染不同细节的模型
3,LOD缺点增加游戏容量不同细节的模型要准备多个,同时增加美术的工作量
Unity3d面试6的更多相关文章
- Unity3D 面试三 ABCDE
说说AB两次面试: “金三银四” 三月份末又面试过两家:共和新路2989弄1号1001这家找了我半天,哇好漂亮的办公大楼!问了保安才知道,这个地址是小区地址.另一家也是创业公司面试我的自称是在腾讯做过 ...
- Unity3D 面试ABC
最先执行的方法是: 1.(激活时的初始化代码)Awake,2.Start.3.Update[FixUpdate.LateUpdate].4.(渲染模块)OnGUI.5.再向后,就是卸载模块(TearD ...
- Unity3D面试——真实的面试,unity3d面试
本来想写一个系列的,一半是抨击现在面试之水,要人之奸,用大哥的话说,要走新手是做螺丝钉和抹布用的.另一半是对出出学校的或者是自废武功转3d的朋友们提供一个比较有价值的参考.不过我时间实在仓促.没有保证 ...
- Unity3D面试问题
注意,是问题,不是笔试题哦.这些是我最近面试北京各公司总结的一些被问到的还算典型的问题.跟大家分享一下.答案是我自己的,不保证标准和完整. 哎,公司年底开人,又校招一群便宜的小鬼……桑死心了……好在找 ...
- 续上文,Unity3D面试ABC
http://www.unitymanual.com/blog-3573-685.html 最先执行的方法是: 1.(激活时的初始化代码)Awake,2.Start.3.Update[FixUpdat ...
- unity3d 我的面试经历
昨天在上海的一家公司面试成功了 这是我第一次面试,也是我的第一份工作 先上我的简历给大家参考下吧 个人简历 个人信息: 姓 名: 廖旭升 学 历: 无 民 族: 汉 ...
- 去蓝港在线面试Unity3D的笔试题。难吗?知道答案的在评论里写出来分享
前一阵子去蓝港面试unity3d程序,在前台登记以后被领到一个吧台前面填2张个人信息表,之后有人送来笔试题,做了1个小时,感觉挺难的.之后被带到下面面试,面试的是一个年龄稍大的(可能是项目经理或者技术 ...
- Unity3D 记第二次面试
2014-03-10 忍不住投递了几份简历大概有20个,总共收到面试电话2个,十分之一.一个是11号下午4点面试另一个是12号下午3点面试(后来没去至于原因下面有)12号没去,为什么?因为招聘要求“精 ...
- Unity3D 记第一次面试
事情是发生在2014-03-05 周三下午 在群里面看到上海艺游急聘Unity3D开发工程师,就整理了下简历投了去!直到接到电话通知我去面试才知道 我之前是有投了简历!太忙了 以至于真的忘了,不过那个 ...
随机推荐
- POJ 1386 Play on Words(单词建图+欧拉通(回)路路判断)
题目链接:http://poj.org/problem?id=1386 题目大意:给你若干个字符串,一个单词的尾部和一个单词的头部相同那么这两个单词就可以相连,判断给出的n个单词是否能够一个接着一个全 ...
- python爬取漫画
抓取漫画的网址是:sf互动传媒 抓取漫画的由来也是看了知乎上有人说用爬取漫画,然后自己也玩玩 首页中每个漫画的url是类似这样存储的: <tr> <td height="3 ...
- day5 常用模块json和pickle
json 和 pickle json和pickle是用于字符串序列化和反序列化的过程,我们在存储和使用的时候,经常把列表存入文件,读取的时候我们还想以列表的形式读取.就需要使用json和pickle. ...
- vscode vue配置和一些其它辅助【工具篇】
后续有补充就经常更新
- 【LOJ】#2007. 「SCOI2015」国旗计划
题解 考虑朴素的做法,断环为链,复制2M个,找到一个位置i,f(i)是这个位置之前开始的线段,结束位置最远的位置在哪 然后对于每一个人,从自己线段的起点往下跳,跳到起点+M或以后的步数就是答案 我们发 ...
- 十四 oracle 视图
一.介绍视图是一张虚拟表,其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视 ...
- 关于node的path模块
const path=require('path'); //basename('绝对路径','截取的后缀') 返回文件的扩展名 let a=path.basename('C:\\temp\\myfil ...
- C++后台研发面试总结
前言: 从中秋到国庆这几天面试了几家公司,有大公司也有小公司,连续几天面试没有系统的整理整理,正好有时间系统的整理一下,好多考点牛客的大佬们都分享过了,虽然每个人的方向不相同,不过多看一些总能找到一些 ...
- CodeForces 805A Fake NP
直觉. 一段区间中,肯定是$2$的倍数最多,因为区间长度除以$2$得到的数字最大.但只有$1$个数字的时候需要特判. #include <cstdio> #include <cmat ...
- Java Web开发——HTML CSS JavaScript 杂记
HTML是一种在互联网上常见的网页制作标注性语言,并不能算作一种程序设计语言.因为它相对程序设计语言来说缺少了其应所有的特征.对于网站设计人员来说,只使用HTML是不够的,需要在页面中引入CSS样式. ...