Unity 亲历面试题

Wesley13
• 阅读 420

1  用c# 实现单例

参考: 

https://www.cnblogs.com/Dean27/p/7744452.html

 继承MonoBehaviour的单体

public class Singleton : MonoBehaviour {
    public static Singleton _Instance;
    public static Singleton Instance
    {
        get
        {
            if(_Instance==null)
            {
                _Instance = FindObjectOfType(typeof(Singleton)) as Singleton;
            }
            return _Instance;
        }
    }
    // Use this for initialization
    void Start () {
        
    }
    
    public void TestResut()
    {
        Debug.Log("hihi  一个最简单的单例");
    }

}

测试

Singleton.Instance.TestResut()

使用泛型抽象类实现的单例

public abstract class NotDestorySingleton<T> : MonoBehaviour  where  T:  NotDestorySingleton <T> {
    protected static T _Instance;
    public static T Instance
    {
        get
        {
            if (_Instance == null)
            {
                GameObject ND = GameObject.Find("ND");
                if(ND == null)
                {
                    ND = new GameObject("ND");
                    ND.AddComponent<T>();
                    DontDestroyOnLoad(ND);
                }
                _Instance=ND.GetComponent<T>();
            }
            return _Instance;
        }
    }
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        
    }
}

public class NotDestoryTest :  NotDestorySingleton<NotDestoryTest> {

    // Use this for initialization
    void Start () {
        
    }
    public  void TestResult()
    {
        Debug.Log("这是一个使用泛型抽象类实现的单例");
    }
    // Update is called once per frame
    void Update () {
        
    }
}

NotDestoryTest.Instance.TestResult();

完结撒花

2  一个Cube父物体,下面有一个子物体(cuber). 如何将子物体cube移动到0点, 子物体cube移动到0点时Rotation也置为0

思路一 子物体和父物体交换, 使用tranform.localRotaion=Quaternion.identy; transform.localPosition=Vector3.zero; 然后父物体和子物体再交换顺序

3 渲染管线的理解

4 Unity 各个版本的区别

 Unity 2019

 AR/VR方面的更新

**AR Foundation

AR Foundation帮助Unity开发者快速开始构建AR项目。你可以在自己的AR体验选择要加入的功能,只需构建一次,就能同时部署到支持ARKit和ARCore的设备。

 AR Foundation以资源包的形式在资源包管理器提供,它把ARKit和ARCore的底层API结合到同一个框架中,包含额外功能以帮助开发者应对AR开发的最大挑战。

**AR Remote(预览版)

AR Remote允许你在设备和Unity编辑器之间传递数据,不必在每次测试功能的时候把项目构建到设备上。

 AR Remote包含Session Recording & Playback会话录制和回放功能。它可以录制设备上的会话过程,在编辑器进行回放,以实现高效的应用程序测试过程,并迭代预览效果。

**手持式AR示例项目

手持式AR示例项目已经发布。该项目的场景、预制件和辅助组件都基于AR Foundation开发,用于展示如何处理平面预览、对象放置等功能。

手持式AR示例项目介绍如何使用轻量级渲染管线LWRP和AR Foundation。它包含所有开发时需要的组件,使开发者可以快速构建和运行自己的AR项目。

图形改进

LWRP支持AR和VR

AR Foundation对轻量级渲染管线LWRP的支持以预览版资源包的形式推出,让开发者为AR体验使用LWRP。

在新版本和LWRP最新资源包中,开发者可以利用Shader Graph着色器视图和LWRP的性能优化功能来为Unity支持的所有VR平台构建VR体验。

立体渲染模式回退功能

当目标设备不支持立体实例化时,立体渲染功能会自动回退为单通道渲染。开发者可以安全地使用更高效的Stereo Instancing立体实例化渲染模式,不必担心特定设备的图形API是否支持该模式。在此前版本中,立体渲染模式会回退为多通道渲染。

立体实例化的后期处理支持

在Unity 2019.1和最新后期处理特效包中,所有对VR可见的后期处理效果都适用于Stereo Instancing立体实例化渲染模式。

对Magic Leap的内置支持

构建到Magic Leap One的支持现在已经加入Unity 2019.1,这意味着开发者不必为了Magic Leap开发而使用特定的技术预览版Unity,只要使用Unity 2019.1就可以了

5 实现网络通信

丢包等处理

6 整理一下重点项目的框架 设计思路 设计方法

7 c++ 可以子类可以继承多个父类, c# 不能同时继承多个,用什么技术可以达到相同效果

    interface 接口

8  两个物体 如何才能发生碰撞

rigibody

9  unity 有哪些性能优化方法

10  对 c# 协同的理解

11  stringBulider 和 StringBuffer,的区别

12  lua , lua和unity 是如何工作的,原理是什么

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
2年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Wesley13 Wesley13
2年前
1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))
容器化部署一套云服务系列1\.容器化部署一套云服务之Jenkins(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fjackson0714%2Fp%2Fdeploy1.html)一、购买服务器服务器!caeef00
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法
Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法参考文章:(1)Google地球出现“无法连接到登录服务器(错误代码:c00a0194)”解决方法(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.codeprj.com%2Fblo
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这