AS3语法和UNITY C#语法的异同
AS3 | UNITY |
Sprite a = new Sprite(); trace(a.paent);
此时a.parent为null,还未AddChild到屏幕上, 一般用这个来判断在不在屏幕上 |
GameObject a = new GameObject(); print(a.transform.parent);
此时为null,证明和屏幕的Root元素平级, 此时已在屏幕上(在不在摄像机视野内另算) UNITY只要new出来就在屏幕上了 |
super 调用父类的方法 |
base |
Function a; 函数引用 |
Func<T> a 或 Action<T> a |
mouseEnable = false | RaycastTarget = false |
------------------------------ U3D面试题 ------------------------------
最近面的一家
给一个三角形面上的三个点,确定法线
用点积,
A-B得出矢量,A-C得出矢量,两个矢量点积一下
说出漫反射和高光公式(这些都属于经验模型)
答: 漫反射
dot(表面法线n,光照方向l)
pow(dot(表面法线n,反射方向r))光泽度
UNITY和安桌项目混合,怎么弄
导出安桌工程,安桌启动UnityPlayerActivity
说出Activity的生命周期
onCreate()
↓
onStart()
↓
onResume() <───┐
↓ │
onPause() <────┘
↓
onStop()
↓
onDestroy()
注意事项
1. onPause() 和 onResume() :
• 这两个方法成对出现,当 Activity 在前台和后台之间切换时, onPause() 和 onResume() 会被交替调用。
2. onStop() 和 onRestart() :
• 当 Activity 从完全不可见到重新可见时,会调用 onStop() 和 onRestart() 。
3. onCreate() 和 onDestroy() :• 这两个方法在整个生命周期中只调用一次,分别在 Activity 创建和销毁时。
4. onSaveInstanceState() 和 onRestoreInstanceState() :
• 这两个方法用于在 Activity 被销毁时保存状态,并在重新创建时恢复状态。
• onSaveInstanceState() :在 Activity 被销毁之前调用,用于保存状态。
• onRestoreInstanceState() :在 Activity 重新创建时调用,用于恢复状态。
四元数
旋转范围 -1 - 1
旋转二周
网易杭州
主要问的几个问题,个人看来还是很基础的,不过本人好像有几个也没答到点子上
后面一些难度高的问题选择了退缩,目前看来很不智,以后要吃掉面试官~
面试的一些基础题 一定要答对,
关于介绍自已做过的项目,一定要进行事前演练,如何介绍,从哪方面着手
最近二次面试都着重问了UI问题,不知咋回事,咱也就这个重点写篇文章吧
开始:
介绍你做的XBOX移植项目
XBOX是微软推出的主机,XBOX也是一个大型的游戏平台,包括XBOX LIVE在线社交服务。
我们做的是一款麻将手游移植,分为客户端和服务端二个部分,
整个游戏改动很大,相当于重做
在开发过程中,根据微软在XBOX上面的开发规定,必须使用WEB SOCKET,
而原来的游戏使用的是传统TCP SOCKET,
再就是画面使用高质量1920X1080的图片,加上手柄处理和手游的手势,还有帐号登录规则完全不一样
我做的ASP.NET单点登录SSO服务器,编写REST FUL接口,供客户端调用
同时和XBOX LIVE服务器进行交互,获取用户信息,以JSON格式返回给客户端,
这一块用到的包括必须是HTTPS,接口必须REST FUL风格,
在客户端我这一块做的是MatchMaking,先到XBOX LIVE后台配置数据模板JSON,
然后去客户端创建LOBBY SESSION后,再创建GAME SESSION
然后提交给XBOX LIVE,还有以及QOS之类的流程
比较难的地方在于开发资料较为封闭,只能通过阅读英文文档来解决问题,
所以我们这个阅读了大量的英文文档,主要是XDK。
XDK每6个月会更新一次,UNITY的更新会在2个月后更新,我们只有在4个月的时间内通过审核,
,所以开发必须要跟得上微软的步伐
这个项目开发了一年半
介绍你的HOLO博物馆藏书系统
主要是对空间扫描和空间锚点的应用
框架方面用的是多场景加载,.unity场景加载用的是一个异步方法 SceneManager.LoadSceneAsync
这个框架在场景浏览中,可以向前,也可以后退,只要输入场景名字就可以了
因为是框架,因此对场景的命名有一定的规定
在展柜中虚拟出各种书,并且可以弹出视频介绍
这个项目开发了三个月
1.UNITY中协程的理解,和线程的区别
区别?效率吧,没有线程的切换
我的理解协程就是一个timer或setTimeOut,它是相当于模拟一个线程,但它不是线程
线程有上下文切换,会有性能上的开销,并且在工作线程中是访问不了UI线程中的用户控件的,
协程则没有这个限制,协程很好的解决了多线程的复杂性和性能上的问题,(线程对共享资源的
访问还要加锁)
当然答案重点应该是效率
coroutine的实现原理
C# 的迭代器模式
2.委托和事件的区别
区别?有啥区别,委托也是事件嘛
事件就是函数调用解藕,一种设计思路
这道题应该答对 了
* 在 C# 中,委托(Delegate)和事件(Event)是两个密切相关但用途不同的概念。它们都用于实现回调机制,但事件是在委托的基础上增加了额外的语义和封装。
委托(Delegate)定义委托是一种类型,它定义了一个方法的签名(返回类型、参数列表等)。
委托可以指向一个或多个具有相同签名的方法,从而实现回调机制。
特点1. 类型安全:委托是类型安全的,它只能指向与其签名匹配的方法。
2. 多播:委托可以指向多个方法,形成一个调用链。当委托被调用时,调用链中的所有方法都会被依次调用。
3. 直接调用:委托可以直接被调用,就像调用普通方法一样。
3.UNITY程序资源热更新?
AssetBundle,它相当于FLEX中的MOUDLE概念,是大型程序中使用的模块概念,
是对资源,脚本的一种整合打包
4.WWW必须要用到什么
能用到啥?判断加载完了就行了呗,是个异步
要启一个协程去加载
资源放Resource文件夹里
5.说说代码驱动和数据驱动
数据就是大数据啦,大数据分析决策,这个是重点
回答的还是简单了点,看看下面的
代码驱动(Code-Driven)和数据驱动(Data-Driven)是两种不同的软件设计和开发方法,它们在处理问题和实现功能时有着不同的侧重点和应用场景。
以下是对这两种方法的详细解释和比较:
代码驱动(Code-Driven)定义代码驱动是一种传统的开发方法,其中大部分逻辑和行为都通过代码直接实现。开发者通过编写具体的代码来定义程序的行为和功能。
数据驱动(Data-Driven)定义数据驱动是一种开发方法,其中程序的行为和逻辑由外部数据控制,而不是直接通过代码实现。
数据通常存储在配置文件、数据库或其他外部存储中,程序根据这些数据来调整行为。
特点
1. 灵活性:通过修改数据而不修改代码,可以灵活地调整程序的行为。
2. 可维护性:数据的修改不需要重新编译代码,降低了维护成本。
3. 可扩展性:易于扩展和修改,适合功能变化频繁的系统。
4. 复杂性:实现数据驱动可能需要更复杂的架构和设计,增加了开发难度。
6.说说UNITY NGUI和UGUI的区别
7.UI代码网上不是有现成的么?
恩,可以用,有的只能做参考,有的是收费的哦
但某些UI有的会在性能方面造成影响
举例子,比如说玩家人物头上的血条
如果用遮罩动画实现的话,效果很棒,美术弄起来很方便,程序直接用就可以了,但是几十个玩家在屏幕上,就卡了
这种实现方式在大型游戏里面就没有义,所以我是选择了拉伸血条的SCALE+重设坐标实现的,性能很OK,效果稍差但经过一些调整,项目总监可以接受
再比如说玩家头上的聊天框,涉及一个图文混排,那么我采用的新的文字引擎系统,速度比原来快十几倍,网上那些都是在新文字引擎没
出来之前的解决方案,使用的话,虽然效果可以达到 ,但是很占用CPU,
FTE 的主要特点
1. 高级文本格式化:
• FTE 支持复杂的文本格式化,包括多语言支持、双向文本(如阿拉伯语和希伯来语)和复杂的排版规则。
• 提供了更精细的文本度量和格式控制,例如行间距、字间距、基线对齐等。
2. 性能优化:• FTE 在处理大量文本和复杂格式时,通常比传统的 TextField 更高效。
• 支持硬件加速渲染,提升文本显示的性能。
3. 嵌入字体支持:
• FTE 支持嵌入字体,允许开发者将自定义字体嵌入到 SWF 文件中,从而在运行时使用这些字体。
• 嵌入字体可以提高文本的显示质量,尤其是在小字号下。
4. 灵活的文本布局:
• FTE 允许开发者更灵活地控制文本的布局,包括多行文本、文本流和文本块。
• 支持动态文本更新和重排,适用于需要频繁更新文本内容的场景。
8.说说页游戏的A星寻路算法
就是一个估价函数,
可以预先在地图上提高格子的权值,
或一次搜索到一半(一定数量)即可开始移动