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