- 面向对象的特性是?对面向对象的理解?
封装继承多态。面向对象:对象是事件的抽象,万物皆对象,在C#中面向是对一个类的抽象。
- 重写和重载的区别?
重写:在父子之间重写,方法名称、返回值类型、参数列表必须相同。
重载:函数名字相同,参数必须不同与返回值无关。
- 求一组数的最大公约数,最小公倍数,以及质数。
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;
}
}
- 值类型和引用类型学过哪些有什么区别?
值类型:int ,double,bool,char,enum,struct
引用类型:string 数组 集合arrylist hashtable list dictionary 栈 队列 自定义类 接口 委托
值类型只有一个内存空间重新赋值会被覆盖 存在栈中
引用类型每new一次会开辟一个新的内存空间 存在堆中
- ArrayList,List,Array有什么区别。
List:类型是确定的一类,需要指定存储的类型,通过索引来访问,大小不固定。
Array:数组,只能存储一种数据类型,长度固定。
ArrayList:链表,类型不固定,值不确定,长度不固定。
- interface与抽象类的区别?
接口只能包含方法,属性,和事件的声明。不能有构造函数,也不能有字段,接口也不允许运算符重载。定义中不允许声明成员的修饰符,接口成员都是公有的,可以被多继承。
抽象类:不能被实例化,只能单继承,可以有抽象方法和非抽象方法,可以有字段属性的定义。
- 委托是什么?举一个观察者模式的例子?
委托:把方法作为一个参数使用。
猫叫老鼠跑。
猫是观察者,老鼠是被观察者,当猫叫(方法)的时候,老鼠就跑(事件监听)。
- 学过的访问修饰符有哪些?具体含义。
public 和private修饰字段和方法的时候,表示该字段或者方法能不能通过对象去访问,只有public的才可以通过对象访问,
private(私有的)只能在类模板内部访问。
protected 保护的,当没有继承的时候,它的作用和private是一样的,当有继承的时候,protected表示可以被子类访问的字段或者方法
- UGUI与NGUI的区别?
1) NGUI还保留着图集,需要进行图集的维护。而UGUI没有图集的概念,可以充分利用资源,避免重复资源。
2) UGUI出现了锚点的概念,更方便屏幕自适应。
3) NGUI支持图文混排,UGUI暂未发现支持此功能。
4) UGUI没有 UIWrap 来循环 scrollview 内容。
5) UGUI暂时没有Tween组件。
- 自己定义一个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])
- 对象池的原理是什么?用代码表现子弹的生成与销毁。
对象池:把创建出的物体放进一个池子里,下次用的时候直接取,如果不够再重新创建。只是控制物体的激活与失活,而不是重复的销毁与创建,节省系统资源。
- 自己定义一个三列两行的Excel,解析在unity中进行输出
- 摆放十个cube,通过方法获取他们的坐标点后进行删除,然后用胶囊模拟人物,当人物靠近这十个cube中心点的时全部生成
- 实现一个Button按钮的颜色变化,以及动画效果(放大缩小)
- 保存和读取数据的类是什么,现在有一个人物,如何保存该人物的姓名和等级?代码实现
PlayerPrefs.SetString("name", "小明");
PlayerPrefs.SetInt("degree", 100);
PlayerPrefs.GetString("name");
PlayerPrefs.GetInt("degree");
PlayerPrefs.DeleteKey("name");
PlayerPrefs.DeleteAll();
保存和应用删除。
- 设计场景一个Plane,里面有障碍物,利用射线检测,点击地面哪里让小球向该位置运动,点击障碍物小球不动
- 把16题的利用射线检测改为利用寻路系统
- 实现一个消消乐的单消功能(10*10矩阵,点一个消除一个生成一个)
- 实现UI播放视频(通过按钮实现播放循环和暂停)
- 利用文件流,读取一个视频,进行复制
- 用三种方式实现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;
- 学过几种获取面板物体的方法,几种生成物体的方法,列举出来
- GameObject.Find();
- Tranform.Find();
- 拖拽
生成:
- GameObject.Instantiate()
- GameObject.CreatePrimitive()
- Resources.Load(“物体名称”)
- 利用UGUI遮罩与相机结合实现小地图(圆形小地图)
- 开启一个应用的进程,开启一个线程
Process.Start("calc");
static void Text()
{
Console.WriteLine("线程开启");
}
static void Main(string[] args)
{
Thread t = new Thread(Text);
t.Start();
Console.WriteLine("main");
}
- 学过哪些特性,举例
[Obsolete()]:提示此方法已经过时了,参数如果有true就会报错此方法.
[Conditional(“方法名字”)]:注释掉该方法的调用.
[DebuggerStepThrough]//对此方法调试操作进行跳过,表示该方法没有任何无错误,可以直接跳过
[CallerLineNumber]int fileLinename = 0, [CallerMemberName]string methodName = "")
调用文件所在的路径,调用该方法的所在行数,调用该方法所在方法的名字 统称:调用者信息特性
- 思维拓展:自己设计一个RPG游戏,把RPG的设计思想用思维导图画出来