unity常用API(四)
unity常用API(四)
个人英语不好,所以看的是2018.1 的中文API 部分代码和解释都来源于此文档:原文链接
视频链接:点击链接
Physics
- Raycast : 向场景中的所有碰撞体投射一条射线,该射线起点为 /origin/,朝向 /direction/,长度为 /maxDistance/。
// 接受一个射线 Ray ray = new Ray(transform.position+transform.forward,transform.forward); bool isCollider = Physics.Raycast(ray); Debug.Log(isCollider); void Update() { Ray ray = new Ray(transform.position+transform.forward,transform.forward); //bool isCollider = Physics.Raycast(ray); // 射线的距离 //bool isCollider = Physics.Raycast(ray, 1); RaycastHit hit; //bool isCollider = Physics.Raycast(ray, out hit); //Debug.Log(hit.point); // 获取捕获的点 //Debug.Log(hit.collider); // 碰撞的游戏物体 // // 碰撞 layer 为xx的层 // bool isCollider = Physics.Raycast(ray, Mathf.Infinity,LayerMask.GetMask("xx")); } //2D Physics2D.Raycast();
UGUI 事件监听
```c#
public GameObject btnGameObject; // 按钮
public GameObject sliderGameObject; // 滑动
public GameObject dropDownGameObject; //下拉
public GameObject toggleGameObject; // 勾选
// Use this for initialization
void Start () {
btnGameObject.GetComponent<Button>().onClick.AddListener(this.ButtonOnClick);
sliderGameObject.GetComponent<Slider>().onValueChanged.AddListener(this.OnSliderChanged);
dropDownGameObject.GetComponent<Dropdown>().onValueChanged.AddListener(this.OnDropDownChanged);
toggleGameObject.GetComponent<Toggle>().onValueChanged.AddListener(this.OnToggleChanged);
}
void ButtonOnClick()
{
Debug.Log("ButtonOnClick");
}
void OnSliderChanged(float value)
{
Debug.Log("SliderChanged:" + value);
}
void OnDropDownChanged(Int32 value)
{
Debug.Log("DropDownChanged:" + value);
}
void OnToggleChanged(bool value)
{
Debug.Log("ToggleChanged:" + value);
}
```
```c#
// 实现接口 UI,EventSystem
//interface
public class UIEventManager2 : MonoBehaviour//, IPointerDownHandler,IPointerClickHandler,IPointerUpHandler,IPointerEnterHandler,IPointerExitHandler
,IBeginDragHandler,IDragHandler,IEndDragHandler,IDropHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
Debug.Log("OnBeginDrag");
}
public void OnDrag(PointerEventData eventData)
{
Debug.Log("OnDrag");
}
public void OnDrop(PointerEventData eventData)
{
Debug.Log("OnDrop");
}
public void OnEndDrag(PointerEventData eventData)
{
Debug.Log("OnEndDrag");
}
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("OnPointerClick");
}
public void OnPointerDown(PointerEventData eventData)
{
Debug.Log("OnPointerDown");
}
public void OnPointerEnter(PointerEventData eventData)
{
Debug.Log("OnPointerEnter");
}
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("OnPointerExit");
}
public void OnPointerUp(PointerEventData eventData)
{
Debug.Log("OnPointerUp");
}
}
```其他
- Camera
ScreenPointToRay : 返回从摄像机通过屏幕点的光线。private Camera camera; // Use this for initialization void Start () { camera = Camera.main; } // Update is called once per frame void Update () { Ray ray = camera.ScreenPointToRay(Input.mousePosition); //Debug.DrawRay(ray.origin, ray.direction); //Debug.DrawLine(ray.origin, ray.origin + ray.direction * 100); RaycastHit hit; bool isCollider = Physics.Raycast(ray, out hit); Debug.Log(hit.collider); } - CharacterController : 可使您轻松进行受碰撞约束的移动,同时不必处理刚体。
public float speed = 3; private CharacterController cc; // Use this for initialization void Start () { cc = GetComponent<CharacterController>(); } // Update is called once per frame void Update () { float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); cc.SimpleMove(new Vector3(h, 0, v) * speed); //cc.Move(new Vector3(h, 0, v) * speed * Time.deltaTime); Debug.Log(cc.isGrounded); } private void OnControllerColliderHit(ControllerColliderHit hit) // 检测碰撞 { Debug.Log(hit.collider); } - Mesh : 材质
public Mesh mesh; private Material mat; // Use this for initialization void Start () { //GetComponent<MeshFilter>().sharedMesh = mesh; //Debug.Log(GetComponent<MeshFilter>().mesh == mesh); mat = GetComponent<MeshRenderer>().material; // 获取材质 } // Update is called once per frame void Update () { mat.color = Color.Lerp(mat.color, Color.red, Time.deltaTime); // 更新颜色 }
联想公司福利 1477人发布
查看13道真题和解析