【Unity】20180901摘录笔记整理

1、JavaScript脚本文件必须放入在StandardAssets、ProStandardAssets和Plugins这3个文件夹中的一个里面,否则无法编译。

2、单例模式和静态类

      单例模式:Singleton,只使用只使用某个类的一个实例

      定义:Public static T Instance;

      调用:T.Instace.Function( );

     静态类:不能继承和被继承 / 不能继承MonoBehaviour,实现接口 / 静态fa方法不能使用非静态成员

     何时使用单例:

      (1)你的类需要保存其他组件作为变量,有必要

      (2)只要你有在Unity编辑器上进行参数配置的需求,有必要

      (3)只要你的管理器需要进行加载的顺序控制,有必要

扫描二维码关注公众号,回复: 3056334 查看本文章

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

猜你喜欢

转载自blog.csdn.net/Dylan_Day/article/details/82053136