gpt4 book ai didi

c# - 将旧的 Unity 代码升级到 Unity 5

转载 作者:太空宇宙 更新时间:2023-11-03 23:04:33 25 4
gpt4 key购买 nike

在触发按钮上播放动画的代码似乎不起作用。我在 Youtube 上看到了一个视频,通过一个简单的 animation.Play(); 它可以在那个视频上运行,但是,我无法让它在我的电脑上运行。我做错了什么还是团结改变了它?请帮助我无法在网上找到解决方案。所有“解决方案都不起作用”。

这是我得到的错误:

Type UnityEngine.Component does not contain a definition for play and no extension method Play of type UnityEngine.component could be found

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

public class animationtrigger : MonoBehaviour {


void Start()
{

}
int speed = 10;
// Update is called once per frame
void Update () {
if (Input.GetKeyDown("N"))
{
animation.Play("Cube|moving side");
//transform.Translate(1 * Vector3.forward * Time.deltaTime * speed);
//Animator anim = GetComponent<Animator>();
//if (null != anim)
// {
// anim.Play("Cube|moving side");
// }
}
}
}

最佳答案

what did i do wrong or did unity change it?

团结改变了。我看过similar过去几周的问题。虽然我不认为它们是重复的,但在这里回答所有这些问题对于以后的问题是有意义的。

animation 变量Component 下定义作为public变量MonoBehaviour继承自。然后您的代码继承自 MonoBehaviour你可以访问 animation .

这些是来自 Component 的完整变量列表已弃用的类:

public Component animation { get; }
public Component audio { get; }
public Component camera { get; }
public Component collider { get; }
public Component collider2D { get; }
public Component constantForce { get; }
public Component guiElement { get; }
public Component guiText { get; }
public Component guiTexture { get; }
public Component hingeJoint { get; }
public Component light { get; }
public Component networkView { get; }
public Component particleEmitter { get;
public Component particleSystem { get; }
public Component renderer { get; }
public Component rigidbody { get; }
public Component rigidbody2D { get; }

访问附加到同一脚本的组件的新方法:

使用 GetComponent<ComponentName>() .将该变量的第一个 字母大写,使其成为组件类。一个异常(exception)是音频成为 AudioSource而不是音频。

1animation.Play("Cube|moving side");变成 GetComponent<Animation>().Play("Cube|moving side");

2rigidbody2D.velocity变成 GetComponent<Rigidbody2D>().velocity

3rigidbody.velocity变成 GetComponent<Rigidbody>().velocity

4renderer.material变成 GetComponent<Renderer>().material

5particleSystem.Play()变成 GetComponent<ParticleSystem>().Play()

6collider2D.bounds变成 GetComponent<Collider2D>().bounds

7collider.bounds变成 GetComponent<Collider>().bounds

8audio.Play("shoot");变成 GetComponent<AudioSource>().Play("shoot");

9camera.depth变成 GetComponent<Camera>().depth

我不必把所有的都放上去,因为下面的例子应该可以指导任何人这样做。这些是 SO 上最常被问及的组件。

缓存组件:

您可以缓存组件,这样您就不必每次都获取组件。

Animation myAnimation;
void Start()
{
//Cache animation component
myAnimation = GetComponent<Animation>();
}

void Update()
{
if(somethingHappens)
{
//No GetComponent call required again
myAnimation.Play("Cube|moving side");
}
}

关于c# - 将旧的 Unity 代码升级到 Unity 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41785057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com