赞
踩
一:三元运算符
1.语法形式 condition ? expression1 : expression2;
condition--是一个bool值--讲解了基本的逻辑判断
如果true则输出expression1它可以是任何合法的表达式,包括常量、变量、函数调用、算术操作
如果false则expression2
- int x = 5;
- int y = 10;
- int max = x > y ? x : y;
二:静态
1.可以直接用类调用--无需先对类进行实例化--属于类的本身
2.原理--类的每个对象具有相同的变量--相同的值--静态字段在内存中只有一份副本,并且在程序的整个执行过程中保持不变。
3.用法:先在Player代码里面--创建static --每有一个物体挂这个组件就会加一
- using UnityEngine;
- using System.Collections;
-
- public class Player : MonoBehaviour
- {
- //静态变量是在类的所有实例之间
- //共享的变量。
- public static int playerCount = 0;
-
- void Start()
- {
- //通过递增静态变量了解
- //已创建此类的多少个对象。
- playerCount++;
- }
- }
调用方法--在其他代码里面直接调用 Player.
- using UnityEngine;
- using System.Collections;
-
- public class PlayerManager : MonoBehaviour
- {
- void Start()
- {
- //可以使用类名和点运算符
- //来访问静态变量。
- int x = Player.playerCount;
- }
- }
不能在静态方法内部--使用非静态类成员变量
因为静态方法属于类---而非静态变量属于类的实例
三:方法重构
意思是可以让你的函数方法名字相同--但是传入的参数类型/参数数量不同
当你调用函数的时候就可以通过你使用的参数--选择是否选择重构的函数
- using UnityEngine;
- using System.Collections;
-
- public class SomeClass
- {
- //第一个 Add 方法的签名为
- //“Add(int, int)”。该签名必须具有唯一性。
- public int Add(int num1, int num2)
- {
- return num1 + num2;
- }
-
- //第二个 Add 方法的签名为
- //“Add(string, string)”。同样,该签名必须具有唯一性。
- public string Add(string str1, string str2)
- {
- return str1 + str2;
- }
- }
- using UnityEngine;
- using System.Collections;
-
- public class SomeOtherClass : MonoBehaviour
- {
- void Start ()
- {
- SomeClass myClass = new SomeClass();
-
- //具体调用的 Add 方法将取决于
- //传入的参数。
- myClass.Add (1, 2);
- myClass.Add ("Hello ", "World");
- }
- }
四:泛型--Generics
1.原理--类型可以作为参数传递给类和方法
首先聊一聊泛型的泛型方法
- public class SomeClass
- {
- //通用方法
- public T GenericMethod<T> (T param)
- {
- return param;
- }
然后就去尝试调用他
- //先实例化类
- SomeClass myClass = new SomeClass();
- //调用方法
- int Result = myClass.GenericMethod<int>(5);
-
- string Result = myClass.GenericMethod<string>("hello");
- //如果是明显的类型--可以忽略后面的类型
- float Result = myClass.GenericMethod(0.5f);
2.聊一下泛型类
- using UnityEngine;
- using System.Collections;
-
- //这是一个通用类。注意通用类型“T”。
- //“T”将被替换为实际类型,同样,
- //该类中使用的“T”类型实例也将被替换。
- public class GenericClass <T>
- {
- T item;
-
- public void UpdateItem(T newItem)
- {
- item = newItem;
- }
- }
- using UnityEngine;
- using System.Collections;
-
- public class GenericClassExample : MonoBehaviour
- {
- void Start ()
- {
- //为了创建通用类的对象,必须
- //指定希望该类具有的类型。
- GenericClass<int> myClass = new GenericClass<int>();
-
- myClass.UpdateItem(5);
- }
- }
五:继承
一个类--构造函数--函数方法
子类--继承父类--构造函数--如果想要设定指定的父类构造函数--需要 在构造函数后面 :base()
调用基类的构造函数。这样做可以确保基类的构造函数在派生类的构造过程中得到执行
六:多态
实例化的时候---> 父类 起名1 = new 子类()-----向上转换
向下转换可以是
if(起名1 is 子类 )
子类 起名2 = (子类)起名1
七:接口----用于跨多个互不相关的类--意思是继承父类没有意义--实现接口很实用
接口名字一般都是I开头able结尾----public interface IKillable<T>;--- 意味着任何内容都具有泛型
要求: 接口中的函数必须被满足---void Kill(T damage)
- using UnityEngine;
- using System.Collections;
-
- //这是只有一个必需方法的基本
- //接口。
- public interface IKillable
- {
- void Kill();
- }
-
- //这是一个通用接口,其中 T 是
- //将由实现类提供的数据类型的
- //占位符。
- public interface IDamageable<T>
- {
- void Damage(T damageTaken);
- }
- using UnityEngine;
- using System.Collections;
-
- public class Avatar : MonoBehaviour, IKillable, IDamageable<float>
- {
- //IKillable 接口的必需方法
- public void Kill()
- {
- //执行一些有趣操作
- }
-
- //IDamageable 接口的必需方法
- public void Damage(float damageTaken)
- {
- //执行一些有趣操作
- }
- }
八.扩展方法---创建一个类的扩展--必须是静态的
- using UnityEngine;
- using System.Collections;
-
- //创建一个包含所有扩展方法的类
- //是很常见的做法。此类必须是静态类。
- public static class ExtensionMethods
- {
- //扩展方法即使像普通方法一样使用,
- //也必须声明为静态。请注意,第一个
- //参数具有“this”关键字,后跟一个 Transform
- //变量。此变量表示扩展方法会成为
- //哪个类的一部分。
- public static void ResetTransformation(this Transform trans)
- {
- trans.position = Vector3.zero;
- trans.localRotation = Quaternion.identity;
- trans.localScale = new Vector3(1, 1, 1);
- }
- }
- using UnityEngine;
- using System.Collections;
-
- public class SomeClass : MonoBehaviour
- {
- void Start () {
- //请注意,即使方法声明中
- //有一个参数,也不会将任何参数传递给
- //此扩展方法。调用此方法的
- //Transform 对象会自动作为
- //第一个参数传入。
- transform.ResetTransformation();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。