UNITY 基础API

UNITY 基础API

using UnityEngine;
using System.Collections;


using UnityEngine.SceneManagement ;  


public class API_07Vector : MonoBehaviour {
//Vector2  v = Input.mousePosition; // 1000 -900 像素,   --像素是一个长度单位,,一个位置
// 结构体,---使用, Vector 2
// 修改位置,
// 值类型, 没有对象的啊啊啊   不能对象点 字段啊啊啊
//transform.position  = new Vector3 (0,0,0);  //dui
 //transform.position.x  = 10 ;   // 对象 cuo  


//---------------------------------- 不能通过对象赋值, 但可以通过结构体,给赋值
// Vector3 pos = transform.position;  //
// pos.x = 10;  // ????????? 这为啥可??????????????????????????
// transform.position = pos;
// Use this for initialization






// Stream Assest ---资源不会压缩,其他会压缩,路径啥都不会改变   音频视屏 AssestBudoule
// 资源不会合并,


public Transform p;
public Transform enemy;
void Start () {
 
//  Vector3 a = new Vector3 (0,0,1);
//  Vector3 b = new Vector3 (0,0,4);
//  Vector3 c = new Vector3 (1,1,1);
//
//  float m  =   a.magnitude;
//  Vector3 n = a.normalized;
//  float A =  Vector3.Angle (a, b);
//  Vector3.Cross (a, b);
//  Vector3.Project (c, a);
//  Vector3 F = Vector3.forward;
// Vector3.Lerp (a, b, 0.1f);
// Vector3.Slerp (a, b, 0.1f);  
// Vector3.MoveTowards (a, b, 0.1f);
//  Vector3.SqrMagnitude (a);


// ------------------------
//Random.InitSate(0);




//float AA = Random.value; // 0-1随即数字
//print (System.DateTime.Now.Ticks);//当前时间 -???
//transform.position = Random.insideUnitCircle*5; // 长度1 *5 的圆形,随即再圆形的坐标  在 X Y 平面上, Z是0 的 ;
//transform.position = Random.insideUnitSphere*10 ;// 球体内随机


//-----------------------------------
//四元素的旋转
 //transform.rotation = Quaternion.Euler(new Vector3(0,0,0)); //四元素旋转的 ;
// 欧拉角    Vector3  类型
//transform.eulerAngles = new Vector3(0,0,0);  // 方便人设置的
//Debug.Log (transform.rotation); // 0001


 //Vector3 dir = enemy.position - p.position;
// 望向敌人  /, 一个旋转---- 前方的  
//p.transform.rotation = Quaternion.LookRotation (dir);
print (Application.installMode);
print (Application.isEditor);
print (Application.isPlaying);
print (Application.companyName);
//当前问件  只读  压缩    PC 路劲   定
print (Application.dataPath);      //C:/Users/12967/Documents/New Unity Project Aniamtioions/Assets
// 自己建的     读写     PC 路劲   不定
print (Application.persistentDataPath);  //C:/Users/12967/AppData/LocalLow/DefaultCompany/New Unity Project Aniamtioions
// 流, 不压缩,只读      PC 路劲   定
print (Application.streamingAssetsPath);  //C:/Users/12967/Documents/New Unity Project Aniamtioions/Assets/StreamingAssets
Application.OpenURL ("file:///D:/Unity/一期项目资源/C#课件/第十三讲:委托/_book/chapter3/2.html");
Application.CaptureScreenshot ("截图");
Application.Quit ();    // 编辑不能用
print(   Application.isPlaying );  //
 






}
 
// Update is called once per frame
void Update () {
//print (Random.Range (4, 10));  // 为随机数--不能取到10 整数
//print (Random.Range (4, 5.5f));  // 小数字


Vector3 dir = enemy.position - p.position;
dir.y = 0;
Quaternion targtrt = Quaternion.LookRotation (dir);
p.rotation = Quaternion.Slerp (p.rotation ,targtrt, Time.deltaTime);


//  Vector3 pp = p.position;
//  Vector3 pos = Vector3.Lerp (enemy.position, pp, Time.deltaTime);
//  p.position = pos;


//p.rotation = Quaternion.Lerp (enemy.position, p.rotation, 0.1f);


if(Input.GetKeyDown(KeyCode.A))
{
UnityEditor.EditorApplication.isPlaying = false; // 退出 模式
SceneManager.LoadScene("aaa");
SceneManager.LoadScene ("AA", LoadSceneMode.Additive); // 默认是Singe   销毁当前,加载下个,  这个是不销毁的意思;
 
AsyncOperation OP = SceneManager.LoadSceneAsync ("dd");
  // OP.progress
}
}

}


//=====================================================================
using UnityEngine;
using System.Collections;


public class API02_Time : MonoBehaviour {


public int runCount = 10000;
// Use this for initialization
void Start () {


// 性能测试, 测试方法的运行时间; 执行100万次--- 0.0几秒;贼几把快
float time1 = Time.realtimeSinceStartup ;
for (int i = 0; i < runCount; i++) {
Mth1 ();
}
float time2 = Time.realtimeSinceStartup;
Debug.Log (time2-time1);
for (int i = 0; i < runCount; i++) {
Mth2 ();
}
float time3 = Time.realtimeSinceStartup;
Debug.Log (time3-time2);


}
 
// Update is called once per frame
 void Update () {
 
 //想这个方向移动,且移动这个方向的距离
//transform.Translate (Vector3.forward*100);
// 每帧1米,
// transform.Translate (Vector3.forward);
// 每帧之间的时间间隔  Time.deltaTime    俩次Update 的时间间隔;
// 每帧--运行距离--- Vector3.forward*Time.deltaTime
// 假设这帧是1秒, 1米
// 假设这帧是0.5秒 1此就是半米  
// 假设0.02 也就是50帧 ,  1* 50/1
// 每帧数移动的距离的和  ---得到一秒内游戏运动的物体
// 1秒3 ---执行3次Update ---1S距离--0.3Vector3.forward+0.3Vector3.forward+0.3Vector3.forward
// 1秒2帧---1帧时间--距离---1S距离--0.2Vector3.forward+0.2Vector3.forward。。。。
transform.Translate (Vector3.forward*Time.deltaTime);








//游戏运行时间,受暂停影响
   //Debug.Log (Time.time);
//游戏运行时间,受暂停影响
//Debug.Log (Time.fixedTime + "Time.fixedTime");




//每帧之间 游戏影响,
//Debug.Log (Time.deltaTime+"Time.deltaTime");
// Editor progectSeting  -- Time ---FixedTimeStep   0.02 设置  ----1 秒执行50帧数
// 固定
//Debug.Log (Time.fixedDeltaTime+"fixedDeltaTime");
//是Time.delateTime 的平滑的时间
//Debug.Log (Time.smoothDeltaTime + "smoothDeltaTime");


//游戏开始到现在运行 帧数
//Debug.Log (Time.frameCount + "frameCount");


//游戏运行时间, 游戏暂停,时间还会一直增加
//Debug.Log (Time.realtimeSinceStartup + "realtimeSinceStartup");
//游戏运行时间, 游戏暂停,时间还会一直增加
//Debug.Log (Time.unscaledTime + "Time.unscaledTime ");
// 场景为单位,计算游戏运行时间
//Debug.Log (Time.timeSinceLevelLoad + "timeSinceLevelLoad");




// 0 暂停  time.DlateTime 会  乘以 Time.timeScale    所有使用这个移动的物体会暂停
// 1 正常 设置时间的比例


//Debug.Log (Time.timeScale + "Time.timeScale ");


}
void Mth1(){
int i = 1 + 2;
}
void Mth2(){
int j = 1 * 2;
}
}
================================================================
using UnityEngine;
using System.Collections;
/// <summary>
///  事件函数
///
/// </summary>
public class API01 : MonoBehaviour {
//  
//  public Vector3 _Position;
//  public Vector3 _Rotation;
//  public Vector3 _Scale;
//  // Editor 模式能运行,发布后无论啥品台都会,不执行 ---不运行项目时候可以执行,运行后就不执行了
//  // 1,点击组件这个组件后,点击右边设置,然后Reset重置数据
//  // 2,当被附件,即添加组件后会,执行该方法,
//  // 可以推出---组件的数据重置---写在这里面
//  void Reset()
//  {
//  Debug.Log ("hahahh");
//  _Position = Vector3.zero;
//  _Rotation = Vector3.zero;
//  _Scale = Vector3.one;
//  }


//  // 当物体被隐藏---这三个都不执行 Awake()  Start () OnEnable()
//  // 1 当场景运行时候
//  // 2 物体实例化后调用
//  // 3 只一次---脚本激活不激活只要有脚本都会调用
void Awake()
{
Debug.Log ("Awake");


}
//  // 1 只一次,脚本不激活,不会被调用
//  // 2, awake 和enable 之后执行
//  // Use this for initialization
void Start () {
Debug.Log ("Start");
}
//  // 1 启用的时候,物体被激活的时候,
//  // 2 多次执行
void OnEnable()
{
Debug.Log (" OnEnable(");
}
//
//  
//  // Update is called once per frame
//  //和游戏设备有关系,如果 运算多了,实际每秒运行了20次,也就是20帧;
//  void Update () {
//  Debug.Log ("Update");
//  }
//  // 固定的update 每秒60次和游戏的性能没关系,CF的子弹,
//  // 但是FixedUpdate 是固定的60秒;
//  void FixedUpdate()
//  {
//  Debug.Log (" FixedUpdate");
//
//  }
//  // 在每update 之后的一帧后执行;
//  void LateUpdate()
//  {
//  Debug.Log ("LateUpdate");
//
//  }
//    // 取消激活的时候
// 多次执行
void OnDisable()
{
Debug.Log (" OnDisable");
}


// 【渲染的指令】
#region
//-----------------------------------------
// 刚出现在屏幕, 不再输出,出现输出
//  void OnWillRenderObject()
//  {
//  Debug.Log (" OnWillRenderObject");
//  Debug.Log ("AHAHAH");
//  }
//
//  void OnPreCull()
//  {
//  Debug.Log ("  OnPreCull");
//  }
//  void OnBecameVisible()
//  {
//  Debug.Log (" OnBecameVisible");  
//  }
//  void OnBecameInvisible()
//  {
//  Debug.Log ("OnBecameInvisible");  
//  }
//  void OnPreRender()
//  {
//  Debug.Log (" OnPreRender");  
//
//  }
//再场景中,无论看见看不见
//  void OnRenderObject()
//  {
//  Debug.Log (" OnRenderObject");  
//  }




//  void OnPostRender()
//  {
//  Debug.Log (" OnPostRender()");  
//  }


 void OnRenderImage()
 {
 Debug.Log (" OnRenderImage");  '
#endregion
 }
//  // 1 编辑模式下使用----绘制物体矩阵的
// 2 gimas --scece 视图中是有这个选项的
void OnDrawGizmos()
{
 
}
//2ci
//  void OnGUI()
//  {
//  
//  }
//  开始一次,??暂停不运行
//  void OnApplicationPause()
//  {
//  Debug.Log (" OnApplicationPause");  
//  }
// 1  删除物体
// 2  删除该脚本
void OnDestroy()
{
Debug.Log (" OnDestroy()");  
}


}








=======================================================================
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System ; // 异常引入空间
public class API03_GameObject : MonoBehaviour {
public GameObject prefab1;
public GameObject Cube1;
public Sprite sprit2;
public Texture tex;
public Image image;
public RawImage rawImage;
private GameObject cube;
public GameObject target ;
// Use this for initialization
void Start () {
//GameObject
#region
// 没有物体的
// new Object ();
// 1 第一种创建方法
//常场景多了一个空物体 ,,卧槽
// new GameObject ();
//空物体,名字叫cube
// new GameObject ("Cube");
       // 2
  // 预制体的或场景中的游戏物体去克隆    特效游戏角色等
//new GameObject(prefab);  错
//GameObject.Instantiate(prefab1);
//GameObject.Instantiate (Cube1);


//创建原始的图形  ,给物体添加组建
//GameObject.CreatePrimitive (PrimitiveType.Plane);
//GameObject go=GameObject.CreatePrimitive (PrimitiveType.Sphere);
//go.AddComponent<Rigidbody> ();
//自己定义,也是一样添加
//go.AddComponent<API01> ();
// 确定游戏物体是否激活
//bool  isActive = go.activeInHierarchy;
//Debug.Log (isActive);
// 不需要渲染,不运行UPdate ,但是还是占用内存的
//go.SetActive (false);
//Debug.Log (go.activeInHierarchy);


// ------------




// 游戏-场景- 物体(GameObject )--组建(  系统的   自己的脚本 )
// System.Object   UnityEngine.Object
// 继承关系    GameObject   Component
// inherited 继承
// 输出物体的名字
//Debug.Log(go.name);
//Debug.Log(go.GetComponent<Transform>().name); // 继承来的属性


// 得到的是这个组建的对象--- 销毁这个对象-----组建就被销毁了????????、
//!!!!! 可以认为这个组件 是一个实例化的对象吗????
//Destroy(go.GetComponent<Rigidbody>());
//Destroy(go); //推荐 在场景中不存在,但还是在一个垃圾池子中,
//DestroyImmediate(go); // 不推荐
// 不销毁
//DontDestroyOnLoad(transform.gameObject);
// 只找到第一个就返回
// 静态方法  ---  类
// 不查找未激活物体的
//Light light  = Object.FindObjectOfType<Light>();
//light.enabled = false ;
// 不能通过对象调用 gameObject. 出不来
// 相当于在自己的脚本中调用自己的方法 ---继承
//Transform [] trans = FindObjectsOfType<Transform>();
//foreach (var item in trans) {
//Debug.Log(item.name);
//}
//------------------------------------------
// sprite HE texture 区别
// 图片放入场景中---就是gameObject  ---- 场景中的物体都是GameObject ---再拖入文件就是预制体了
// 1 sprit 一般做UI的可以←图集--优化DrawCall ,但Texture 也行,Texture 做大的背景 一个DrawCall, 但是2的N次方再Andriod 和IOS 品上占资源很小
// 2 sprit 可以做动画,但是Texture 是不行的
// 3 sprit Render 组件可以让物体 sptite 直接拖入场景中  ,Texture 不能 拖入场景
// 4 大的纹理底纹就使用Textture ,一般模型贴图,Sprit UI 的
//  Sprite go1 =  Instantiate<Sprite>(sprit2);
//  go1.name = "sprite";
//  image.sprite = go1;
// 报个小错误
//  Texture t = Instantiate<Texture>(tex);
//  t.name = "texture";
//  rawImage.texture = t;
//-------------------------------------
// 不能找影藏,
//      // try catch
//  try{
//  cube = GameObject.Find("Cube");
//  cube.SetActive(false);
//  }
//  //小异常
//  catch( Null