WXDUnity API讲解笔记56-74

一、射线检测

射线Ray的构造函数为 :
public Ray(Vector3 origin, Vector3 direction);
RaycastHit类用于存储发射射线后产生的碰撞信息。常用的成员变量如下:collider与射线发生碰撞的碰撞器
distance 从射线起点到射线与碰撞器的交点的距离
normal 射线射入平面的法向量
point 射线与碰撞器交点的坐标(Vector3对象)
2D射线检测:

GameObject需要有2d collider组件

Physics2D.Raycast(Vector2 origin, Vector2 direction, ContactFilter2D contactFilter, RaycastHit2D[] results);
Physics2D.Raycast(Ray ray, float distance, int layerMask);
Physics2D.Raycast(Ray ray, float distance, int layerMask, float minDepth);

二、UGUI事件监听:3种方法

1 拖拽:

2 代码添加:

public GameObject btnGameObject;
public GameObject sliderGameObject;
public GameObject dropdownGameObject;
public GameObject toggleGameObject;

void Start () {
    btnGameObject.GetComponent<Button>()
        .onClick.AddListener(this.OnButtonClick);
    sliderGameObject.GetComponent<Slider>().
        onValueChanged.AddListener(this.OnSliderChange);
    dropdownGameObject.GetComponent<Dropdown>().
        onValueChanged.AddListener(this.OnDropdownChange);
    toggleGameObject.GetComponent<Toggle>().
        onValueChanged.AddListener(OnToggleChange);
}

void OnButtonClick() {
    Debug.Log("Button On Click");
}

void OnSliderChange(float value) {
    Debug.Log("Slider value: " + value);
}

void OnDropdownChange(Int32 index) {
    Debug.Log("Dropdown value: " + index);
}

void OnToggleChange(bool value) {
    Debug.Log("Toggle value: " + value);
}

通过实现接口的方式进行监听:
特点:脚本是一对一的,即脚本放在哪个UI GameObject上,就只对该UI有监听效果
   是通过射线进行监听的

三、如何通过www下载图片

using UnityEngine;
using System.Collections;

public class WWWTest : MonoBehaviour {
    private string url = "http://i7.download.fd.pchome.net/t_960x600/g1/M00/0B/10/ooYBAFQlOlqIHes-AAYQp3J3sHQAAB9HAJnaqQABhC_539.jpg";
    IEnumerator Start() {
        WWW www = new WWW(url);
        yield return www;  // 等待下载完成
        Renderer renderer = GetComponent<Renderer>();
        renderer.material.mainTexture = www.texture;
    }
}

四、 Touches触摸事件

触摸事件为触屏提供Input方法

Debug.Log(Input.touchCount);
Debug.Log(Input.touches);
Debug.Log(Input.touches.Length);

if (Input.touches.Length > 0) {
    Touch touch0 = Input.touches[0];
    print(touch0.position); // touch所在的位置
    TouchPhase phase = touch0.phase;
    print(phase); // 判断触摸当前的状态
    print(touch0.deltaPosition); // position的变化(pixes)   
}

五:关于Camera组件的作用

Projection(投射):

Perspective(透视):以3D方式观察物体

Orthographic(正交):以2D方式观察物体

Culling Mask(剔除遮罩):
当前Camera可以看到什么层

Depth(深度):
Camera的渲染次序,值越大,越后渲染,所以当多个Camera存在于同一个Scene时,只能看到Depth值最大的那个Camera看到的东西
(但如果Depth值最大的那个Camera的Viewport Rect 不能覆盖整个屏幕,那么可以看到Depth值较小的那个Camera渲染出来的东西)

Clear Flags(清除标记):
当前Camera看不到的地方、屏幕空白的地方该怎么处理,或者说该怎么处理上一帧的画面。我们看到的画面都是一帧一帧渲染出来的,当前帧如果不清除上一帧的画面的话,两帧的画面就会出现叠加。

Camera类:
main –
ScreenPointToRay() --将屏幕坐标转换为一条射线。射线的origin为camera,射线指向屏幕上的点

void Update () {
    Ray ray = mainCamera.ScreenPointToRay(Input.mousePosition); 
    
    // Debug.DrawRay(ray.origin, ray.direction); // 长度较短的射线
    Debug.DrawLine(ray.origin, ray.origin + ray.direction * 100); // 100m的射线

    // 鼠标射线与物体的碰撞检测
    RaycastHit hitInfo;
    bool isCollidered = Physics.Raycast(ray, out hitInfo);
    Debug.Log(hitInfo.collider);
}

六、CharacterController 角色控制器

角色控制器让你在受制于碰撞的情况下很容易的进行运动,而不用处理刚体。

角色控制器不受力的影响,仅当你调用Move函数时才运动。它执行运动,但是受制于碰撞。
center – character的capsule的中点

height – character的capsule的高度

isGrounded – 在last move中,CharacterController是否接触了地面
Move() – 传入一个向量absolute movement deltas,按照向量(方向和大小)运动
SimpleMove() – 传入一个运动速度(方向和大小)即可.
OnControllerColliderHit(ControllerColliderHit hit) – Message

七、Mesh的设置

一个允许通过脚本创建或修改网格的类。

网格包含顶点数据(位置,法线,纹理坐标等)和面(面通常是三角形)数据。

八、Material材质类

Maerial:材质 贴到Mesh指定的物体上
在没有指定材质的时候,系统会默认赋值一个Default Material,为全白色

color – 修改主颜色

shader – 所使用的shader

mainTexture – 修改主材质
颜色渐变动画:

public Texture texture;
private Material material;

void Start () {
    material = GetComponent<MeshRenderer>().material;
    material.mainTexture = texture; // 修改主材质
}

void Update () {
    material.color = Color.Lerp(material.color, Color.red, Time.deltaTime); 
    // 修改颜色
}

九、Animator简介

想要GameObject实现某种功能,就要在它上面附加相应的组件。所以为了让一个GameObject拥有动画效果,用来控制the Mecanim动画状态系统。
speed – 整个动画状态机的播放速度

十、Unity API方法变更

  1. Rigidbody
  2. 粒子系统变更
  3. 场景切换变更
  4. 2d/3d声音
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值