MonoBehaviour
1.component和GameObject方法一样但没有放在基类中
2.addComponent是GameObject独有的
3.MonoBehaviour 所有脚本的基类
4.ExecuteInEditMode。编辑模式下脚本也可运行 类似注解 加在类上, 编辑模式上也可调用
5.invoke 调用某个方法 invokeRepeating 重复调用某个方法 CancelInvoke取消调用某个方法
MonoBehaviour
1.component和GameObject方法一样但没有放在基类中
2.addComponent是GameObject独有的
3.MonoBehaviour 所有脚本的基类
4.ExecuteInEditMode。编辑模式下脚本也可运行 类似注解 加在类上, 编辑模式上也可调用
5.invoke 调用某个方法 invokeRepeating 重复调用某个方法 CancelInvoke取消调用某个方法
component和GameObject方法一样但没有放在基类中
getComponentInChildren 得到组件,多个相同组件,只得到第一个
getComponentsInChildren 得到所有组件 包括自己与子组件)
getComponentInParent
getComponentsInParent
sendMessageUpwards 查找本物体上包括父物体 脚本调用传递过来方法名的方法。
一般由A场景跳转到B场景的话,A场景物体会全部被销毁,如果物体调用了DontDestoryOnLoad就不会在跳转场景时被销毁。
findObjectsOfType<> 不查找未激活物体
UnityEngine Object是基类
object
public class WWWCS : MonoBehaviour {
public string url;
// Use this for initialization
IEnumerator Start () {
WWW www = new WWW(url);
yield return www;
Renderer renderer = GetComponent<Renderer>();
renderer.material.mainTexture = www.texture;
}
// Update is called once per frame
void Update () {
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System;
public class jiekouCS : MonoBehaviour,IPointerDownHandler{
public void OnPointerDown(PointerEventData eventData)//这些参数都是不能改变的,鼠标按下时触发事件
{
Debug.Log("OnPointerDown");
}
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
类变量获取
1.物体有且仅有唯一一个Transform组件
2.父物体未激活,子物体也处于未激活
3.activeHierarchy 物体激活状态
4.activeSelf 父物体被禁用,activeSelf还可以是true
5.未激活一样可以获取到属性,只是不在场景中显示Update方法不在执行
Raycast():只会检测碰撞到的第一个物体
RaycastAll():会检测碰撞到的所有物体
1.new 新的物体--空的物体
2.GameObject.Instantiable(prefab). 根据perfab或另外一个物体进行初始化,可理解为clone
3.GameObject.createPrimitive(PrimitiveType.物体)
Raycast:射线检测与其他物体发生碰撞的条件
1.物体必须在射线的视野内
2.物体必须有碰撞器
1.不同帧,占用时间不一样。
2.Time.deltaTime 用来控制运动相关的东西
3.timeScale 设置deltaTime运动速率,对所有deltaTime产生影响。设为0暂停,0.5f等为慢动作
4.relatimeSinceStartup用在方法执行后再获取realtime做性能测试
如何切换加载场景
Application中的常用静态变量和静态方法
public class ApplicationCS : MonoBehaviour {
// Use this for initialization
void Start () {
//Application在应用中用,EditorApplication在编辑器下用
print(Application.identifier);//标识
print(Application.companyName);//公司名
print(Application.productName);//项目名
print(Application.installerName);//安装名
print(Application.installMode);
print(Application.isEditor);
print(Application.isFocused);//是否再焦点
print(Application.isMobilePlatform);//是否为移动平台
print(Application.isPlaying);//是否再运行
print(Application.platform);//平台
print(Application.unityVersion);//unity版本
print(Application.version);//游戏版本
print(Application.runInBackground);//是否可以在后台运行
Application.Quit();//只有build出来之后,才能用它来退出游戏
Application.OpenURL("www.sikiede.com");//打开网址
//Application.CaptureScreenshot("游戏截图");//屏幕截图
}
// Update is called once per frame
void Update () {
//在编辑器模式下退出游戏
if (Input.GetKeyDown(KeyCode.Space))
{
UnityEditor.EditorApplication.isPlaying = false;
}
}
}
通过Application获取datapath(没好好看,过几天再看一下)
Camera.main:通过标签获取maincamera上的camera组件,但是他的Tag必须为maincamera。
public class CameraCS : MonoBehaviour {
private Camera maincamera;
// Use this for initialization
void Start () {
maincamera = Camera.main;//获取main camera上的camera组件
}
// Update is called once per frame
void Update () {
//通过camera,把屏幕上的点转化为射线,进行射线检测
Ray ray = maincamera.ScreenPointToRay(Input.mousePosition);//把屏幕上的点,转变为射线
RaycastHit hit;//存储射线碰撞到的游戏物体,是一个out类型的引用参数
bool isCollider = Physics.Raycast(ray, out hit);//判断有没有碰撞到
if (isCollider)
{
Debug.Log(hit.collider);//输出鼠标碰到的物体是什么
}
}
}
通过AddForce控制运动
AddForce:给游戏物体施加一个力。
public class RigidbodyPositionCS : MonoBehaviour {
public Rigidbody player;
public Transform enemy;
public int force;
void Update () {
player.AddForce(Vector3.forward * force);
}
}
public class RigidbodyPositionCS : MonoBehaviour {
public Rigidbody player;
public Transform enemy;
// Use this for initialization
// Update is called once per frame
void Update () {
//按下空格,通过Rigidbody的MoveRotation实现缓慢旋转
if (Input.GetKey(KeyCode.Space))
{
Vector3 dir = enemy.position - player.position;//player望向enemy,dir表示前方向
dir.y = 0;//让他们的y坐标不受影响
Quaternion target = Quaternion.LookRotation(dir);//实现前方向与dir保持一致的旋转,就是按照前方向转向enemy
player.MoveRotation (Quaternion.Slerp(player.rotation, target, Time.deltaTime * 0.5f));
}
}
}
旋转控制多的时候,通过Rigidbody来控制,解决性能
Rigidbody刚体组件中position和MovePosition控制移动
position控制移动,是突然移过去的
MovePosition控制移动,是缓慢移动过去的
public class RigidbodyPositionCS : MonoBehaviour {
public Rigidbody player;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
player.position = player.transform.position + Vector3.forward * Time.deltaTime;//控制移动,是从一个位置突然跳转的另一个位置
player.MovePosition(player.transform.position + Vector3.forward * Time.deltaTime);//缓慢移动
}
}

Quaternion中的Lerp和Slerp插值运算
做旋转运算时,用slerp比lerp好,旋转运算,一般都用S开头的
public class SiyuanshuCS : MonoBehaviour {
public Transform player;
public Transform enemy;
// Use this for initialization
// Update is called once per frame
void Update () {
//实现player缓慢转向,望向enemy
Vector3 dir = enemy.position - player.position;//player望向enemy,dir表示前方向
dir.y = 0;//让他们的y坐标不受影响
Quaternion target= Quaternion.LookRotation(dir);
player.rotation = Quaternion.Slerp(player.rotation, target, Time.deltaTime * 0.5f);
}
}