一次U3D温习

1. 面向对象的特性是?对面向对象的理解?

 

封装继承多态。面向对象:对象是事件的抽象,万物皆对象,在C#中面向是对一个类的抽象。

 

2. 重写和重载的区别?

重写:在父子之间重写,方法名称、返回值类型、参数列表必须相同。

重载:函数名字相同,参数必须不同与返回值无关。

 

3. 求一组数的最大公约数,最小公倍数,以及质数。

            int m=2;

            int n=6;

            int max;

            int min;

            min = m < n ? m : n;

            max = m > n ? m : n;

            for (int i = max; i >0; i--)

            {

                if (m % i == 0 && n % i == 0) {

 

                   Console.WriteLine("最大公约" + i);

                    Console.WriteLine("最小公倍"+min*i);

                    break;

                }

 

                

            }

static void Main(string[] args)

        {

 

            for (int i = 2; i < 10; i++)

            {

 

 

                if (st(i))

                {

                    Console.WriteLine(i);

                }

 

            }

 

 

        }

 

        static bool st(int n)

        {

            int m = (int)Math.Sqrt(n);

            for (int i = 2; i <= m; i++)

            {

                if (n % i == 0 && i != n)

                    return false;

            }

            return true;

        }

    }

 

4. 值类型和引用类型学过哪些有什么区别?

值类型:int ,double,bool,char,enum,struct

引用类型:string 数组 集合arrylist hashtable list dictionary 栈 队列 自定义类 接口 委托

值类型只有一个内存空间重新赋值会被覆盖 存在栈中

引用类型每new一次会开辟一个新的内存空间 存在堆中

 

5. ArrayListListArray有什么区别。

List:类型是确定的一类,需要指定存储的类型,通过索引来访问,大小不固定。

Array:数组,只能存储一种数据类型,长度固定。

ArrayList:链表,类型不固定,值不确定,长度不固定。

 

6. interface与抽象类的区别?

接口只能包含方法,属性,和事件的声明。不能有构造函数,也不能有字段,接口也不允许运算符重载。定义中不允许声明成员的修饰符,接口成员都是公有的,可以被多继承。

抽象类:不能被实例化,只能单继承,可以有抽象方法和非抽象方法,可以有字段属性的定义。

7. 委托是什么?举一个观察者模式的例子?

委托:把方法作为一个参数使用。

猫叫老鼠跑。

猫是观察者,老鼠是被观察者,当猫叫(方法)的时候,老鼠就跑(事件监听)。

 

8. 学过的访问修饰符有哪些?具体含义。

public 和private修饰字段和方法的时候,表示该字段或者方法能不能通过对象去访问,只有public的才可以通过对象访问,

private(私有的)只能在类模板内部访问。

protected 保护的,当没有继承的时候,它的作用和private是一样的,当有继承的时候,protected表示可以被子类访问的字段或者方法

 

 

9. UGUI与NGUI的区别?

1) NGUI还保留着图集,需要进行图集的维护。而UGUI没有图集的概念,可以充分利用资源,避免重复资源。
   2) UGUI出现了锚点的概念,更方便屏幕自适应。 
   3) NGUI支持图文混排,UGUI暂未发现支持此功能。 
   4) UGUI没有 UIWrap 来循环 scrollview 内容。 
   5) UGUI暂时没有Tween组件。

10. 自己定义一个int类型一维数组进行冒泡排序,然后反转他的排序。

 

 

static void Main(string[] args)

        {

 

            int[] data = {5,2,3,6,10,60 };

 

            for (int i = 0; i < data.Length; i++)

            {

                for (int j = i+1; j < data.Length-1; j++)

                {

                    if (data[i] > data[j]) {

                        int d = data[i];

                        data[i] = data[j];

                        data[j] = d;

 

                    }

 

                }

 

            }

            for (int i = 0; i < data.Length; i++)

            {

                Console.WriteLine(data[i]);

 

            }

 

        }

 

反转:把if(data[i]<data[j])

 

 

 

11. 对象池的原理是什么?用代码表现子弹的生成与销毁。

对象池:把创建出的物体放进一个池子里,下次用的时候直接取,如果不够再重新创建。只是控制物体的激活与失活,而不是重复的销毁与创建,节省系统资源。

 

 

 

 

12. 自己定义一个三列两行的Excel,解析在unity中进行输出

 

13. 摆放十个cube,通过方法获取他们的坐标点后进行删除,然后用胶囊模拟人物,当人物靠近这十个cube中心点的时全部生成

 

 

 

14. 实现一个Button按钮的颜色变化,以及动画效果(放大缩小)

15. 保存和读取数据的类是什么,现在有一个人物,如何保存该人物的姓名和等级?代码实现

        PlayerPrefs.SetString("name", "小明");

        PlayerPrefs.SetInt("degree", 100);

        PlayerPrefs.GetString("name");

        PlayerPrefs.GetInt("degree");

        PlayerPrefs.DeleteKey("name");

        PlayerPrefs.DeleteAll();

保存和应用删除。

 

16. 设计场景一个Plane,里面有障碍物,利用射线检测,点击地面哪里让小球向该位置运动,点击障碍物小球不动

 

 

17. 16题的利用射线检测改为利用寻路系统

 

 

18. 实现一个消消乐的单消功能(10*10矩阵,点一个消除一个生成一个)

 

19. 实现UI播放视频(通过按钮实现播放循环和暂停)

 

 

 

20. 利用文件流,读取一个视频,进行复制

 

 

21. 用三种方式实现cube的移动

void Update () {

float h=Input.GetAxis("Horizontal");//返回-1到1的值

float v = Input.GetAxis("Vertical");//返回-1到1的值

 

transform.Translate(0,0, v*Time.deltaTime);

 

transform.Rotate(new Vector3(0,h*Time.deltaTime*30,0) );

transform.Translate(new Vector3(0, j * Time.deltaTime*10, 0));

Rigidbody.Addforce(5*Vector3.forward);

}

}

position移动的问题

 

transform.position += transform.forward*Time.deltaTime;

22. 学过几种获取面板物体的方法,几种生成物体的方法,列举出来

1. GameObject.Find();

2. Tranform.Find();

3. 拖拽

生成:

1. GameObject.Instantiate()

2. GameObject.CreatePrimitive()

3. Resources.Load(“物体名称”)

 

23. 利用UGUI遮罩与相机结合实现小地图(圆形小地图)

24. 开启一个应用的进程,开启一个线程

Process.Start("calc");

        static void Text()

        {

            Console.WriteLine("线程开启");

        }

        static void Main(string[] args)

        {

            Thread t = new Thread(Text);

            t.Start();

            Console.WriteLine("main");

        }

25. 学过哪些特性,举例

[Obsolete()]:提示此方法已经过时了,参数如果有true就会报错此方法.

[Conditional(“方法名字”)]:注释掉该方法的调用.

[DebuggerStepThrough]//对此方法调试操作进行跳过,表示该方法没有任何无错误,可以直接跳过

[CallerLineNumber]int fileLinename = 0, [CallerMemberName]string methodName = "")

调用文件所在的路径,调用该方法的所在行数,调用该方法所在方法的名字 统称:调用者信息特性

 

 

26. 思维拓展:自己设计一个RPG游戏,把RPG的设计思想用思维导图画出来

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值