1、JavaScript脚本文件必须放入在StandardAssets、ProStandardAssets和Plugins这3个文件夹中的一个里面,否则无法编译。
2、单例模式和静态类
单例模式:Singleton,只使用只使用某个类的一个实例
定义:Public static T Instance;
调用:T.Instace.Function( );
静态类:不能继承和被继承 / 不能继承MonoBehaviour,实现接口 / 静态fa方法不能使用非静态成员
何时使用单例:
(1)你的类需要保存其他组件作为变量,有必要
(2)只要你有在Unity编辑器上进行参数配置的需求,有必要
(3)只要你的管理器需要进行加载的顺序控制,有必要
3、ITween中三个回调函数
Onstart:在当前动画开始执行的时候执行
OnUpdate:在当前动画的每一帧中执行
OnComplete:在当前动画执行完成后执行
4、协程
void Start( ){
StartCoroutine( Countdown( ) ); //开始协程
}
IEnumerator Countdown( ){ //返回值
for( float timer=3; timer>=0; timer-=Time.deltaTime )
yield return 0; //现在停止
Debug.log(" ");
}
StopAllCoroutines( ),停止开始的协程
也可以字符串作为参数
5、Unity中三种脚本函数调用方法
静态函数:脚本名.函数名()
Gameobject.Find("脚本附加的物体名").SendMessage("函数名")
Gameobject.Find("脚本附加的物体名").GetComponent<脚本名>( ).函数名( );
BroadCastMessage方法进一步整合力SendMessage方法
6、实例和变量
实例:保留值,不能重用
变量:重用,不能保留值
7、相对坐标 / 绝对坐标坐标的转化
绝对→相对
transform.InverseTransformPoint( transform.Position)
transform.TransformPoint( vector3.up )
8、Unity移动物体到指定位置的四种方法
(1)void update( ){
float step=speed*Time.deltatime;
gameObject.transform.localPosition=vector3.MoveTowards(gameObject.transform.localPosition, new vector3(10,-3,50),step);
}
(2)使用插值
void update( ){
float step=speed*Time.deltatime;
gameobject.transform.localPosition=new Vector3(
Mathf.Lerp(gameObject.transform.localPosition.x,10,step),
Mathf.Lerp(gameObject.transform.localPosition.y,-3,step),
Mathf.Lerp(gameObject.transform.localPosition.z,50,step),
)
(3)ITween
ITween.MoveTo(m_UIbgCamera, iTween.Hash("x",-20,"y",-3,"z",50,"time",1.0f,"islocal",true));
(4)使用协程
StartCoroutine( MoveToPosition( ) );
IEnumerator MoveToPosition( ){
GameObject m_UIbgCamera=Gameobject.Find("");
While(m_UIbgCamera.transform.localPosition!=new vector3(-5,-3,50)){
m_UIbgCamera.transform.localPosition=Vector3.MoveTowards( m_UIbgCamera.transform.localPosition, new yield
return 0;)
}
9、计算场景中两点间的最短距离
vector3.Distance( , )
10、用户shen生成持久性对象
DontDestroyOnLoad( gameObject );
产生对象的持久性复制,用户需要创建单例对象
某些类需要作为单一实体存在,如:
GameManager、HighScoreManage、AudioManager、SavegameManager等,并包含统一的行为集合
全局静态Instance属性的最大优势在于,各类可直接访问全部GameManager属性,并调用较高层次功能。
可直接访问全部任何脚本文件,且无须使用任何局部变量或对象引用引用
11、基于接口的事件管理
接口仅定义了派生类应有的全部函数集,派生类在必要时须实现dui'对应函数,接口的存在使得qi't其他类可通过多态机制调用函数,且无须了解各个派生类的具体类型。
12、代码折叠折叠
#region #endregion