2019-09-26 15:56:16 weixin_44919646 阅读数 36
  • Unity3D的物理系统实战入门

    本课程深入浅出的介绍Unity3D物理引擎系统的概念,向初学者展示Unity3D物理引擎常见的编程思路和使用方式,与此同时,引领学习者逐步完成一款经典的关卡类物理引擎小游戏《Marble Drop》,详细展示如何根据项目的实际需求搭建简单而准确的物理组件和模块,对之前的理论知识进一步巩固和熟习。

    604 人正在学习 去看看 伍晓波

unity3d 代码里获取组件
例如 animator
状态机里控制动画的状态
public Animator anim;
void Awake()
{
anim=this.GetComponent();
使物体移动
anim.SetFloat(“Speed”,0.2f);
}
void Update()
{
float vertical=Input.GetAxis(“Vertical”);
anim.SetFloat(“Speed”,vertical);
anim.SetFloat(“Angular”,Input.GetAxis(“Horizontal”));
}

2018-04-27 15:24:47 yuyingwin 阅读数 877
  • Unity3D的物理系统实战入门

    本课程深入浅出的介绍Unity3D物理引擎系统的概念,向初学者展示Unity3D物理引擎常见的编程思路和使用方式,与此同时,引领学习者逐步完成一款经典的关卡类物理引擎小游戏《Marble Drop》,详细展示如何根据项目的实际需求搭建简单而准确的物理组件和模块,对之前的理论知识进一步巩固和熟习。

    604 人正在学习 去看看 伍晓波

一、封装一个基类,实现继承类创建一次后,脱离调用Unity3D先找到gameObject,才能访问物体上上脚本组件。

      实现原理,在Awake方法内,将脚本添加到一个字典Dictionary里面。使用时,从字典里获取。

      基类源码:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;
[ExecuteInEditMode]
public class ZeroneXMono : MonoBehaviour
{
    /// <summary>
    /// string 代指当前 gameObject.Name
    /// </summary>
    public static Dictionary<string, Component> scriptsMonobehaviours = new Dictionary<string, Component>();


    public void Awake()
    {
        scriptsMonobehaviours.Add(name, this);
    }


    private void Start()
    {


    }


    public static T GetComponent<T>(string name)
    {
        return scriptsMonobehaviours[name].GetComponent<T>();
    }

}

测试脚本 B:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;


public class B : ZeroneXMono
{
    private void Start()
    {


    }
    public void DebugB()
    {
        Debug.Log("B");
    }

}

测试脚本 A:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System.Collections.Generic;


public class A : MonoBehaviour
{
    private void Start()
    {


    }
    public void DebugD()
    {
        ZeroneXMono.GetComponent<B>("B").DebugB();
    }

}

测试方法:将脚本A、B分别挂在两个空物体上,将脚本B的gameObject名称改为"B",通过执行A脚本DebugD()方法来实现调用功能。


2018-04-21 16:14:17 cc187299067 阅读数 5953
  • Unity3D的物理系统实战入门

    本课程深入浅出的介绍Unity3D物理引擎系统的概念,向初学者展示Unity3D物理引擎常见的编程思路和使用方式,与此同时,引领学习者逐步完成一款经典的关卡类物理引擎小游戏《Marble Drop》,详细展示如何根据项目的实际需求搭建简单而准确的物理组件和模块,对之前的理论知识进一步巩固和熟习。

    604 人正在学习 去看看 伍晓波

在unity中获取到某个物体的方式

(1)public GameObject target;通过外部赋值来进行获取,但是在小项目中还可以使用,大的项目会管理非常混乱,尤其是在打包AssetBundle时,依赖关系很难处理。

(2)GameObject.Find("");这种获取物体的方式在unity5.0之后已经被取消了。

(3)GameObject.FindGameObjectWithTag("")通过标签来获取到某个物体,这个是获取到一个物体,相对应的是获取到同一种标签的数组GameObject.FindGameObjectsWithTag("")。

(4)GameObject.FindObjectOfType(typeof("")),通过物体上的组件类型来找到其物体,但这个方法只能找到在场景中第一个active为true的物体。

(5)GameObject.FindObjectsOfType(typeof("")),通过物体上的组件类型来找到其物体,这个方法可以找到在场景中全部为active为true的物体。

(6)Resources.FindObjectsOfTypeAll(""),找到场景中和Project两个中共有几个物体,这个一般不用。

(7)transform.Find(),这个是最常用的。

(8)transform.GetComponentInChildren<>(),这个在查找到的物体中也包括他自身。

2019-02-02 17:26:40 Jaihk662 阅读数 408
  • Unity3D的物理系统实战入门

    本课程深入浅出的介绍Unity3D物理引擎系统的概念,向初学者展示Unity3D物理引擎常见的编程思路和使用方式,与此同时,引领学习者逐步完成一款经典的关卡类物理引擎小游戏《Marble Drop》,详细展示如何根据项目的实际需求搭建简单而准确的物理组件和模块,对之前的理论知识进一步巩固和熟习。

    604 人正在学习 去看看 伍晓波

 

一、组件(Component)

组件:即是游戏物体的组成零件

Unity3D就是一款“组件式”游戏开发引擎,使用各种各样的组件拼装出我们游戏物体,最终拼接出一款完整的游戏

组件也就是Unity3D的核心,所有组件在如下位置寻找:

例如:随便选择任意一个物体,Inspector中都会有Transform这个组件:

 

二、基本组件之一:Transform组件

Transform:变换组件,用于存储游戏物体的基本信息

Transform三个基本属性:

  • Position:位置,XYZ分别表示中心点坐标
  • Rotation:旋转,XYZ分别表示往这个方向旋转的角度,单位是度,即"360"="0"
  • Scale:缩放,XYZ三个方向大小缩放

是的,和QWER移动旋转缩放等功能用处一致

Reset:初始化属性,效果如下:


 


 

2016-03-08 11:16:59 honey199396 阅读数 1123
  • Unity3D的物理系统实战入门

    本课程深入浅出的介绍Unity3D物理引擎系统的概念,向初学者展示Unity3D物理引擎常见的编程思路和使用方式,与此同时,引领学习者逐步完成一款经典的关卡类物理引擎小游戏《Marble Drop》,详细展示如何根据项目的实际需求搭建简单而准确的物理组件和模块,对之前的理论知识进一步巩固和熟习。

    604 人正在学习 去看看 伍晓波

一、直接在编辑器Inspector上添加一个组件。

二、在脚本中使用AddComponent函数添加一个组件,例如:

using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {
    private CanvasGroup m_CanvasGroup;
    void Start()
    {
        m_CanvasGroup = GetComponent<CanvasGroup> ();
        if(m_CanvasGroup == null){
            gameObject.AddComponent<CanvasGroup> ();
            m_CanvasGroup = GetComponent<CanvasGroup> ();
        }
    }
}

官方实例:

    // Adds the sphere collider to the game object
    SphereCollider sc = gameObject.AddComponent("SphereCollider") as SphereCollider;
public Component AddComponent(Type componentType);

三、利用RequireComponent添加一个组件。

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

[RequireComponent(typeof(CanvasGroup))]
[RequireComponent(typeof(Image))]
public class Test : MonoBehaviour {
    private CanvasGroup m_CanvasGroup;
    private Image m_Image;
    void Start()
    {
        m_CanvasGroup = GetComponent<CanvasGroup> ();
        m_Image = GetComponent<Image> ();
    }
}

RequireComponent:这个类一定需要哪些组件,如果目前这些组件没有被加上,就自动加上。

官方实例:

using UnityEngine;
// The GameObject requires a Rigidbody component
[RequireComponent (typeof (Rigidbody))]
public class PlayerScript : MonoBehaviour {
    Rigidbody rb;

    void Start() {
        rb = GetComponent<Rigidbody>();
    }
    void FixedUpdate()  {
        rb.AddForce(Vector3.up);
    }
}
public RequireComponent(Type requiredComponent);

public RequireComponent(Type requiredComponent, Type requiredComponent2);

public RequireComponent(Type requiredComponent, Type requiredComponent2, Type requiredComponent3);

–Rocky

刚体组件包含的属性:

博文 来自: qq_39588003

Unity3D音频播放 动态加载组件

博文 来自: zhengkangchen
没有更多推荐了,返回首页