Unity3D学习笔记(十三):委托、考试复习
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerManager : MonoBehaviour {
//PlayerManager只有一个实例化
private static PlayerManager _instance;//用private把-instance隐藏掉
public static PlayerManager GetIntance//声明一个GetIntance属性,保护-instance,只有get
{
get
{
if (_instance == null)
{
_instance = new PlayerManager();//GetIntance 保证每次使用,都是第一次new出来的对象-instance
}
return _instance;
}
}
private PlayerManager()//隐藏构造函数,防止使用new PlayerManager,只能使用GetIntance
{
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RedisTest.Test
{
[Serializable]
public class TestClass
{
public string Name = "";
public TestClass(string n)
{
Name = n;
}
public override bool Equals(object obj)
{
TestClass other = obj as TestClass;
if (other == null)
return false;
if (!base.GetType().Equals(obj.GetType()))
return false;
return (this.Name.Equals(other.Name));
}
public override int GetHashCode()
{
return Name.GetHashCode();
}
public static explicit operator TestClass(string jsonString)
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<TestClass>(jsonString);
}
public override string ToString()
{
return Newtonsoft.Json.JsonConvert.SerializeObject(this);
}
}
}
教室1
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ClassRoom_1 : MonoBehaviour {
//public ClassManager manager;
// Use this for initialization
void Start () {
//manager.classOver += ClassOver;
//ClassManager._instance.classOver += ClassOver;
}
// Update is called once per frame
void Update () { }
public void ClassOver()
{
Debug.Log("教室1下课了");
//manager.classOver += ClassOver;
//ClassManager._instance.classOver -= ClassOver;
}
}
教室2
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ClassRoom_2 : MonoBehaviour {
// Use this for initialization
void Start () { } // Update is called once per frame
void Update () { }
public void ClassOver()
{
Debug.Log("教室2下课了");
}
}
考试复习
C#基础:
、下列有关基本类的大小不正确的是 D
A、int类型是4个字节
B、bool类型是1个字节
C、long类型是8个字节
D、char类型是一个字节 //char类型占两个字节 、关于定义数组定义不正确的是 C
A、int[] numbers={,,,,,};
B、int[] numbers=new int[];
C、int[][] numbers=new int[][];//定义二维数组的正确方法:int[,] a =new int [3,5];
D、var a=new[]{,,,,,}; 、有关数组说法不正确的是 A
A、数组的内存是分配在栈中//堆
B、数组的索引从零开始的
C、数组是一种数据结构,它包含若干相同的类型的变量
D、数组可以是一维、多维、交错的 、有关结构体说法不正确的是 D
A、在结构体声明中,除非字段被声明为const或static,否则无法初始化
B、结构体不能声明默认的构造函数(没有参数的构造函数)或析构函数
C、结构体不能从类或其他结构体继承
D、结构体是引用类型的//结构体是值类型,类是引用类型 、有关结构体和类的说法不正确的是 B
A、结构是值类型的,而类是引用类型的
B、结构体不可以声明构造函数//不能声明无参构造,可以声明有参构造
C、结构体直接继承System.ValueType类型
D、结构体可以继承接口//结构体不能继承类,可以继承接口 、关于静态类说法不正确的是 C
A、声明静态类,该类不能使用new关键字创建实例
B、静态仅包含静态成员//const常量
C、静态类不能包含常量成员
D、静态类是密封的//不能被继承,隐含密封 、有关委托的说法不正确的是 C
A、一旦为委托分配了方法,委托与该方法具有完全相同的行为
B、委托是一种引用方法的类型
C、委托可以链接在一起,方法不必与委托签名完全匹配//必须和委托签名匹配 、delegate void Del(int x); C
void DoWork(int k);
下列关于委托订阅不正确的是
A、Del d=DoWork;
B、Del d=new Del(DoWork);
C、Del d+=DoWork//还未创建,不可订阅
D、Del d=delegate(int x){DoWork(x);}; //看匿名委托和委托的签名是否一致 、有关静态构造函数说法不正确的是 C
A、静态构造函数既没有访问修饰符,也没有参数
B、在创建第一个实例前或引用任何静态成员之前,将自动调用静态构造函数来初始化。//初始化静态成员
C、在程序中,用户可以控制何时执行静态构造函数//间接执行:调用静态成员,实例化对象
D、无法直接调用静态构造函数 、有关继承需要用的关键字说法正确的是 ACD
A、virtual用于修饰方法、属性、索引器或事件,并使它们可以在派生类中被重写。
B、virtual可以和static、abstract、private、override修饰符一起使用。//都不可以
C、override关键字提供从基类继承的成员的新的实现,重写的基类方法必须是virtual、abstract、或override关键字修饰的。
D、Sealed用于修饰类时,将会阻止其他类从该类派生//修饰方法,禁止被重写 、以下c#代码:
using System.Threading;
class App
{
public static void Main()
{
Timer timer = new Timer(new TimerCallback(CheckStatus), null, , );
Console.Read();
}
static void CheckSatus(Object state)
{
Console.WriteLine("正在进行检查...");
}
}
在使用代码创建定时器对象的时候,同时指定了定时器的事件,运行时将每隔两秒打印一行“正在运行检查...”,因此,TimerCallback是一个( ) A
A.委托//目前只有委托可以把方法当做参数传递
B.结构
C.函数
D.类名 、 阅读以下的C#代码:
public class TEApp
{
public static void ThrowException()
{
throw new Exception();
}
public static void Main()
{
try
{
Console.WriteLine("try");
ThrowException();
}
catch (Exception e)
{
Console.WriteLine("catch");
}
finally
{
Console.WriteLine("finally");
}
}
}
请问代码运行结果是( )。(选择一项) A
A.try catch finally
B.try
C.try catch
D.try finally
抛异常的用法:
try:包含异常的语句
try不能单独使用,要搭配catch和finally使用
catch:捕获异常,可以填参数
catch(Exception e){},(Exception是所有异常的基类)
finally:最后都会执行,作为替补收尾工作,
无论如何都会执行,即使前面有return
结果:输出“捕获到了异常”,而“”不会输出 、在C#中,一个类( ).(选择一项) B
A.可以继承多个类//类的单根性,只能有一个父类
B.可以实现多个接口
C.在一个程序中只能有一个子类
D.只能实现一个接口 、程序运行过程中发生的错误,叫作( ).(选择一项) C
A.版本
B.断点
C.异常
D.属性 、针对下面的C#代码:
using System;
delegate void D(int i);
class P
{
public static void Main()
{
V(new D(R));
}
public static void R(int t)
{
V();
}
public static void V(int i)
{
Console.WriteLine(i.ToString());
Console.ReadLine();
}
}
以下说法正确的是( )(选择一项) B
A.代码中存在错误,delegate voidD(int i);不能定义在名称空间或者类之外//可以定义在类之外
B.代码中存在错误,代码行V(new D(R));使用委托错误//V方法需要整形参数,却传了委托
C.程序正常运行,输出为0
D.程序正常运行,输出为21 、被volatile关键字修饰字段的作用是( ) B
A、提供给子类使用,不提供给其他类使用
B、禁止对字段的访问施加优化
C、表示只读字段,只能赋值一次
D、只能在本程序集中使用
变量修饰符,在多线程中使用,对于值类型的变量,禁止多次拷贝,只能有一份,避免数据不同步(禁止将变量的值存在cache缓存里,只能从内存里拿) 、在C#中,可以通过装箱和拆箱实现值类型与引用类型之间相互转换,在下列代码中,有( )处实现了拆箱。(选择一项) B
装箱:把值类型的数据放到引用类型的变量里
拆箱:把引用类型的数据放到值类型的变量里(强转)
装箱和拆箱的条件:需要有继承关系
string a = “”; //不是装箱,String和int没有继承关系
object o = string; //不是装箱,String是引用类型
int age = ;
object o= age; //装箱:子类对象存放在父类里,里氏转换
o=; //装箱
age=(int)o; //拆箱
object oAge =age; //装箱
A.
B.
C.
D. 、在C#中,接口与抽象基类的区别在于( )。(选择一项) A
A.抽象基类可以包含非抽象方法,而接口只能包含抽象方法//抽象类什么都可以放,接口:属性(get和set方法),方法,索引器(属性),事件(委托-方法),本质都是方法
B.抽象基类可以被实例化,而接口不能被实例化
C.抽象基类不能被实例化,而接口可以被实例化//抽象类不可以被实例化,而接口不能被实例化
D.抽象基类能够被继承,而接口不能被继承//接口可以继承 、下列关于 C# 中索引器理解正确的是 ( ) C
A、索引器的参数必须是两个或两个以上 //个数任意,但不能无
B、索引器的参数类型必须是整数型 //字符串,枚举
C、索引器没有名字 //this[ in index]
D、以上皆非 、以下关于 ref 和 out 的描述哪些项是正确的? ( 多选 ) ( ) ACD
A、使用 ref 参数,传递到 ref 参数的参数必须最先初始化。
B、使用 out 参数,传递到 out 参数的参数必须最先初始化。//可以放在方法内部
C、使用 ref 参数,必须将参数作为 ref 参数显式传递到方法。
D、使用 out 参数,必须将参数作为 out 参数显式传递到方法 算法题
、一个笼子里面关了鸡和兔子(鸡有2 只脚,兔子有4 只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物?请用C#语言实现这个计算过程;
、有一个数组 “int a[]” 使用冒泡排序实现数组内的排序(C#语言实现):
、获得一个int型的数中二进制中的1的个数(C#语言实现)
using System;
class Program
{
static void Main(string[] args)
{
int x = ;
for (int i = ; i < ; i++)
{
Console.WriteLine("位{0} = {1}", i, GetBit(x, i));
}
Console.ReadKey();
}
// 获取指定位的值
static int GetBit(int x, int bit)
{
return (x >> bit) & ;
}
}
、输入一个数组,实现一个函数,让所有奇数都在偶数前面(C#语言实现) Unity3D方面
、Unity3D引擎中最基本的计量单位是什么?米
、Unity3D中实现运动组件的位置变化的两种方法?(请用C#语言实现)
transform.Translate(Vector3.forward);
Rigidbody rb = GetComponent<Rigidbody>();
rb.AddForce(Vector3.forward, ForceMode.Force);
、一个GameObject对象最基本的组件是什么?请描述这个组件的基本功能!
、请用C#代码实现给一个游戏个体添加上刚体组件,并且需要这个游戏对象可以支持碰撞和穿透效果;
Rigidbody rb = gameObject.AddComponent<Rigidbody>();
BoxCollider box = gameObject.AddComponent<BoxCollider>();
、如何获取一个对象上的”MyTestScript.cs”脚本?(请用C#语言实现)
MyTestScript myScript = gameObject.GetComponent<MyTestScript>();
、请用Unity中的四元数绕一个点(20.0f, 30.0f, 0.1f)的X轴顺时针旋转20度。(请用C#语言实现)
Void Start()
{
}
voie MyRotateAround(Vector3 pos, Vector3 axis, float angle)
{
Quaternion q = Quaternion.AngleAxis(angle, axis);
Vector3 dir = transfor.position - pos;
Vector3 projectV = (Vector3.Dot(axis, dir) / axis.magnitude) * axis.normalized;
Vector3 n = dir - projectV;
Vector3 newN = q * n;
Vector3 newPos = pos + projectV + newN;
transform.position = newPos;
transform.rotation *= q;
}
、请阐述:如果我们创建了一个游戏对象后后我们需要添加哪些的组件才能使Unity引擎将其渲染出来。(请用C#实现组件的添加代码)
Unity3D学习笔记(十三):委托、考试复习的更多相关文章
- python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息,抓取政府网新闻内容
python3.4学习笔记(十三) 网络爬虫实例代码,使用pyspider抓取多牛投资吧里面的文章信息PySpider:一个国人编写的强大的网络爬虫系统并带有强大的WebUI,采用Python语言编写 ...
- java之jvm学习笔记十三(jvm基本结构)
java之jvm学习笔记十三(jvm基本结构) 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完全有信心,让概念在你的脑子里变成 ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
- unity3d学习笔记(一) 第一人称视角实现和倒计时实现
unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...
- Unity3D学习笔记2——绘制一个带纹理的面
目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 ...
- Unity3D学习笔记3——Unity Shader的初步使用
目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. 渲染 ...
- Unity3D学习笔记4——创建Mesh高级接口
目录 1. 概述 2. 详论 3. 其他 4. 参考 1. 概述 在文章Unity3D学习笔记2--绘制一个带纹理的面中使用代码的方式创建了一个Mesh,不过这套接口在Unity中被称为简单接口.与其 ...
- Unity3D学习笔记6——GPU实例化(1)
目录 1. 概述 2. 详论 3. 参考 1. 概述 在之前的文章中说到,一种材质对应一次绘制调用的指令.即使是这种情况,两个三维物体使用同一种材质,但它们使用的材质参数不一样,那么最终仍然会造成两次 ...
- Unity3D学习笔记7——GPU实例化(2)
目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 3. 参考 1. 概述 在上一篇文章<Unity3D学习笔记6--GPU实例化(1)>详细介绍了Unity3d中GPU实例化的 ...
- Unity3D学习笔记8——GPU实例化(3)
目录 1. 概述 2. 详论 2.1. 自动实例化 2.2. MaterialPropertyBlock 3. 参考 1. 概述 在前两篇文章<Unity3D学习笔记6--GPU实例化(1)&g ...
随机推荐
- python3爬虫-爬取新浪新闻首页所有新闻标题
准备工作:安装requests和BeautifulSoup4.打开cmd,输入如下命令 pip install requests pip install BeautifulSoup4 打开我们要爬取的 ...
- mysql python pymysql模块 增删改查 插入数据 介绍 commit() execute() executemany() 函数
import pymysql mysql_host = '192.168.0.106' port = 3306 mysql_user = 'root' mysql_pwd = ' encoding = ...
- display:table和display:table-cell结合使用
.GoodList{ display :table; height :54px; width :56px; line-height: 14px padding: 0 1 ...
- 从Maven仓库中导出jar包
从Maven仓库中导出jar包:进入工程pom.xml 所在的目录下,输入以下命令:mvn dependency:copy-dependencies -DoutputDirectory=lib更简单的 ...
- 获取多达 16GB 的 Dropbox 免费空间!
Dropbox官网
- keras搭建密集连接网络/卷积网络/循环网络
输入模式与网络架构间的对应关系: 向量数据:密集连接网络(Dense层) 图像数据:二维卷积神经网络 声音数据(比如波形):一维卷积神经网络(首选)或循环神经网络 文本数据:一维卷积神经网络(首选)或 ...
- 第六章 数据库设计之ER模型
在ER图中实体用方框表示 实体其实就相当于一个二维表,实体实例就相当于二维表中的一行 属性在二维表中用椭圆表示,属性就是描述实体特征的数据项 概念:键(也被成为候选键):1,属性集合K上的行唯一 ...
- C++编译器模板机制剖析
思考:为什么函数模板可以和函数重载放在一块.C++编译器是如何提供函数模板机制的? 一.编译器编译原理 什么是gcc gcc(GNU C Compiler)编译器的作者是Richard Stallma ...
- SQL Server报“GUID应包含带4个短划线的32位数”
转自:http://www.seayee.net/article/info_106.html 最近在配置一台服务器的MS SQL Server 2005的维护计划自动备份数据库,能创建维护计划,但设置 ...
- linux常用命令:iostat 命令
Linux系统中的 iostat 是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视.它的特点是汇报磁盘活动统计情况,同时也会 汇报出CPU使用情况 ...