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();
        }

    }
}

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

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

时间: 2024-12-28 01:28:00

Unity-3d Day07的相关文章

【Unity 3D】学习笔记二十八:unity工具类

unity为开发者提供了很多方便开发的工具,他们都是由系统封装的一些功能和方法.比如说:实现时间的time类,获取随机数的Random.Range( )方法等等. 时间类 time类,主要用来获取当前的系统时间. using UnityEngine; using System.Collections; public class Script_04_13 : MonoBehaviour { void OnGUI() { GUILayout.Label("当前游戏时间:" + Time.t

Unity 3D 实战核心技术详解 书籍出版

经过半年的努力,处女作<Unity 3D 实战核心技术详解>终于问世了,购买网址: http://www.broadview.com.cn/article/70 在12月5日到12日期间,在打折的基础上优惠,书籍内容全是干货,购买方式:可以查看网页中的"如何购买".

unity 3d yield 用法总结

最近,需要需要用unity 3d做点东西,但是了碰到了延迟加载问题,我总结余下: Coroutines & Yield是unity3d编程中重要的概念,它可以实现将一段程序延迟执行或者将其各个部分分布在一个时间段内连续执行,但是在Javascript与C#中实现Coroutines & Yield,在语法上却有一些区别: javascript中yield用法很简单,直接yield就行了,或者yield WaitForSeconds (2); c#中的用法如下: yield不可单独使用 需要

Unity 3d中Shader是什么,可以吃吗?

众所周知,Unity3d是一款跨平台非常广的游戏引擎,上手容易,界面友好,集成功能众多,是目前开发手游的主流引擎.本人有幸使用Unity 3d进行开发已一年多时间,已领略了这歀引擎的强大之处. 编写shader也是我工作内容的一部分,先来说说shader是什么吧,我以自己的理解说明一下: 首先 shader是一种语言,一种在GPU,也就是显卡上执行的高级语言.shader的本意是着色器,可以自定义GPU的渲染管线中的两个环节(即顶点和片段).由此,我们可以控制对象在屏幕上的渲染效果,甚至实现一些

【Unity 3D】学习笔记四十二:粒子特效

粒子特效 粒子特效的原理是将若干粒子无规则的组合在一起,来模拟火焰,爆炸,水滴,雾气等效果.要使用粒子特效首先要创建,在hierarchy视图中点击create--particle system即可 粒子发射器 粒子发射器是用于设定粒子的发射属性,比如说粒子的大小,数量和速度等.在创建完粒子对象后,在右侧inspector视图中便可以看到所有的粒子属性: emit:是否是使用粒子发射器. min size:粒子最小尺寸. max size:粒子最大尺寸. min energy:粒子的最小生命周期

【图说】Eclipse与Unity 3D协同工作

原地址:http://blog.csdn.net/h570768995/article/details/9355313 Eclipse开发过程中总会碰到很多的难题,如何利用好工具帮助我们更快捷的开发也是一件重要事. 下面介绍Eclipse与Unity 3D协同工作: 1,首先在Unity3D中简单建立一个工程文件 2,好的,接下来点击[File]->[Build setting] 3,然后点击[Build],记好你Build出来的.apk的名字.这时候在工程目录下会出现“temp”文件夹(没有B

【Unity 3D】学习笔记三十四:游戏元素——常用编辑器组件

常用编辑器组件 unity的特色之一就是编辑器可视化,很多常用的功能都可以在编辑器中完成.常用的编辑器可分为两种:原有组件和拓展组件.原有组件是编辑器原生的一些功能,拓展组件是编辑器智商通过脚本拓展的新功能. 摄像机 摄像机是unity最为核心组件之一,游戏界面中显示的一切内容都得需要摄像机来照射才能显示.摄像机组件的参数如下: clear flags:背景显示内容,默认的是skybox.前提是必须在render settings 中设置天空盒子材质. background:背景显示颜色,如果没

【Unity 3D】学习笔记二十六:unity游戏脚本(六)

在3D游戏世界中,任何一个游戏对象在创建的时候都会附带Transform(变换)组件,并且该组件是无法删除的,也不应该删除.在unity中,Transform面板一共有3个属性: Position  (位置) Rotation(旋转) Scale(缩放) 这三个值都是用来调整游戏对象在游戏界面中的位置,状态等相关参数. Position  (位置) 任何一个游戏对象的三维坐标都保存在Vector3容器中,该容器记录对象在X轴,Y轴,Z轴的坐标.一旦Vector33容器中的坐标发生变化,那么Sce

C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想

如果你接触过<设计模式>.软件架构的编程思想,就会知道优秀的设计准则:"组合优于继承的". 这句话很简短,但开始学习OOP的时候,真切的是--不太好理解(以我个人当初学习为例). OOP的继承思想 在设计主角(Player)的时候,为了能够复用A.B.C的功能,我开始把A.B.C按照继承来写,多了一些Virutal\Override\Protected等修饰符,功能没有任何问题,就是有些别扭.如Start.Update方法,只能在A中采用模板方法处理,万一B.C.Playe

C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型

遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透.故再次系统学习之—第三次学习3D数学. 本次,希望实现的功能很简单: 如在小地图中,希望可以动态画出Player当前的位置.z的朝向:用3条线.z轴正向.30°旋转.-30°旋转. 问题是:0点可以获得,P1点? P2点是未知的. 我尝试了2个小时,结果不竟如人意,少于沮丧. 不得不,再次花点时间系统的学习3D数学: 1 位移–向量和点: 点: 点和向量在数学上是一致的,实际生活中点的概念比较好理解,坐标点来定位