Unity-3d Day07

Component与脚本通信:

Component⽅法:
  GetComponent();
  GetComponent<Type>();
  GetComponent(“Type”);

     //!!!!!!强转必须要变量接收!!!!!!!
        //返回Component类型,用as强转
        Transform t1 = GetComponent(typeof(Transform)) as Transform;
        //使用泛型(常用方式)
        Transform t2 = GetComponent<Transform>();
        //使用名字获取
        Transform t3 = GetComponent("Transform") as Transform;

 



主要作⽤:获取游戏物体及其⼦物体的组件

  GetComponent 如果游戏物体有⼀个附加,则返回Type类型的组件,如果没有则为 null。
  GetComponentInChildren 返回Type类型组件,在GameObject或它的任何⼦物体使⽤深度优先搜索,仅返回激活的组件。
  GetComponents 在游戏物体返回全部Type类型组件。
  GetComponentsInChildren 在GameObject或任何它的⼦物体,返回全部Type类型组件

AddComponent⽅法:
 作⽤:给游戏物体添加组件
注意:没有RomoveComponent⽅法,删除组件⽤Object.Destroy()

SendMessage⽅法:
  SendMessage 在当前游戏物体的所有MonoBehaviour上搜索名称为 methodName的⽅法并调⽤
  SendMessageUpwards 在当前游戏物体及其⽗物体的所有MonoBehaviour中搜索名称为methodName的⽅法并调⽤
  BroadcastMessage 在当前游戏物体及其⼦物体的所有MonoBehaviour中搜索名称为methodName的⽅法并调⽤

接下来就是动画方面的Animation组件,老版本的基本上都不用了  但还是要了解一下。。
  Animation 启⽤“⾃动播放”(Play Automatically) 时将播放的默认动画
  Animations 可以从脚本访问的⼀系列动画
  Play Automatically 启动游戏时是否应⾃动播放动画?
  Animate Physics 打开时,动画将在物理循环中执⾏仅在与运动学刚体结合时有⽤
  Culling Type 确定不播放动画的时间

Animation常⽤属性:
  animatePhysics 为真时动画在物理循环中执⾏,与运动学刚体结合时有⽤。
  clip 默认的动画⽚段
  cullingType 消隐类型: AlwaysAnimate, BasedOnRenderers,
  BasedOnClipBounds, BasedOnUserBounds
  isPlaying 是否正在播放中
  localBounds Animation组件在本地空间的边界,参考Bounds类型
  playAutomatically 为真时⾃动播放
  this[string] 返回⽚段的动画状态
  wrapMode 动画循环模式

Animation构成框架:

Animation常⽤⽅法:

AnimationClip类属性:
  length 动画的⻓度,以秒计算(只读)
  frameRate 被采样的关键帧帧速率(只读)
  wrapMode 在动画状态设置使⽤的默认循环模式。
  localBounds 动画组件在本地坐标空间这个动画剪辑的也被附加。

 

AnimationClip类⽅法:
  SetCurve 给动画指定曲线⼀个特殊的属性
  ClearCurves 从剪辑清除所有曲线
  AddEvent 给剪辑添加动画事件
SetCurve函数:
  SetCurve(relativePath:string, type: Type, propertyName: string, curve:AnimationCurve);

  relativePath应⽤给该曲线的游戏物体的路径。 relativePath被格式化类似路 径,如"root/spine/leftArm"。如果relativePath为空,表⽰动 画剪辑附加的游戏物体。
  type 被动画的组件的类类型
  propertyName 被动画的属性的名字或路径
  curve 动画曲线

今天的东西很多,但好些都是以后用不到的,了解一下就可以了   我这也省略了不少…………

上代码:

using UnityEngine;
using System.Collections;

public class AnimationScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
        Animation anim = animation;
        //创建一个动画剪辑
        AnimationClip clip = new AnimationClip();
        //创建一个动画曲线
        AnimationCurve curve = AnimationCurve.Linear(0f, 1f, 5f, 100f);
        //AnimationCurve curve = new AnimationCurve();
        curve.AddKey(0f, 1f);
        curve.AddKey(1f, 5f);
        curve.AddKey(2f, 0f);

        clip.SetCurve("", typeof(Transform), "localPosition.x", curve);
        clip.SetCurve("", typeof(Transform), "localPosition.y", curve);
        clip.SetCurve("", typeof(Transform), "localPosition.z", curve);

        AnimationEvent animEvent = new AnimationEvent();
        animEvent.time = 2f;
        animEvent.functionName = "PlayScaleAnimation";

        animation.AddClip(clip, "hehe");
        animation.Play("hehe");
    }
    
    // Update is called once per frame
    void Update () {
        

    }
    //当动画执行到插入事件位置  方法被触发
    public void PlayScaleAnimation()
    {
        animation.Play("ScaleAnimation");
    }
}

 

using UnityEngine;
using System.Collections;

public class CubeScript : MonoBehaviour {

    // Use this for initialization
    void Start () {
        string name = GetComponentInChildren<AnimationScript>().name;
        Component[] coms = GetComponentsInChildren<AnimationScript>();
        foreach (var item in coms)
        {
            print(item.name);
        }
    }
    
    // Update is called once per frame
    void Update () {
        //transform.RotateAround(Vector3.zero, Vector3.back, 1000f * Time.time);

        if (Input.GetKeyDown(KeyCode.Space))
        {
            animation.Play();
        }

        
    }
}

唉  这一天过的   要记的东西太多了   好了   打道回府 啦啦啦

这两天想写个像样点的项目  就不写小项目了   过几天写好了一起发  晚安,,世界

转载于:https://www.cnblogs.com/little-sun/p/4382142.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue-Unity-WebGL 是一个具有极高可扩展性和灵活性的 Unity3D web 端开发框架,它将 Vue.js 与 Unity Web Player 和 WebGL 等技术相结合,为开发者提供了最佳的解决方案。 Vue-Unity-WebGL 框架具有很高的兼容性和易用性,开发者可以更加灵活地应用该框架来定制自己的项目。由于该框架具备了许多优秀的特性,如自适应布局、多平台支持等,使得开发者可以轻松地实现用户体验和开发效率的提升。此外,Vue-Unity-WebGL 框架不仅提供了可视化开发工具,还提供了完整的运行环境,为开发者提供了优秀的开发体验。 Vue-Unity-WebGL 框架的另一个重要特点是其大量的插件与扩展功能,这些插件和扩展可以为项目的开发和管理提供坚的技术支持。比如,通过 vue-router 可以控制路由,Vue-Unity-WebGL 可以协作处理组件数据和 Unity3D 渲染等复杂的操作,而 Vuex 则可以使开发者方便地处理应用数据流和组件状态的管理。这些插件和扩展功能极大地提高了 Vue-Unity-WebGL 框架的可扩展性和灵活性,使得开发者可以更加容易地进行定制。 综上所述,Vue-Unity-WebGL 框架是一个快速、可靠且大的解决方案,这使得开发者能够轻松地编写出高质量的 Unity3D web 应用程序。该框架具有大量的功能,实现可扩展性、灵活性、易用性和可维护性,比其他框架更具有竞争力。在未来的发展中,Vue-Unity-WebGL 框架将会被更多的开发者喜爱和应用,并在技术社区中拥有更广泛的影响力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值