【问题标题】:Declare a variable class声明一个变量类
【发布时间】:2015-04-14 13:22:28
【问题描述】:

我需要在我的代码中声明一个变量类,以便我可以访问一个函数(在所有类中具有相同的名称)但每次执行不同的行为。

这是我的代码:

using UnityEngine;
using System;
using System.Collections;

public class Bubble : ItemBehaviour
{

    // Use this for initialization
    void Start ()
    {

    }

    // Update is called once per frame
    void Update ()
    {

    }

    void OnMouseDown ()
    {
        theclass.Behaviour ();
    }
}

知道(该类将是可变的)。


谢谢大家的回答,但有点特别。

我的游戏是关于玩家和游戏对象之间的交互,当玩家接近任何“可交互”的项目时,比如说出现一个气泡,这个气泡是一个游戏对象,对于任何允许交互的对象都是一样的,

所以,既然我在做一个 2D 游戏,我想,如果我制作一个“通用”会很棒 EmptyGameObject 包含 anyObject 将包含的所有常见方面,我将主要功能和常见功能分组到一个通用脚本中,然后将其添加到这个 emptyGameObject,然后我将 Bubble 预制件添加到这个 Game 对象,我添加了一个代码给它这个代码包含我在第一篇文章中写的内容。

我在想,现在每次我想要一个对象时,我只需放下这个空的游戏对象预制件并更改精灵和特征。

并且每个对象都有不同的行为(例如:我可以删除一个苹果,就像角色消费它一样,但我不能消费一扇门,门宁愿触发动画而不是被破坏)我在一个每个项目的类。

现在无论类是什么(对象是),触发器都在气泡类中(我首先发布的),但是类每次都会不同,我不能创建一个包含多态性的类,因为它的上下文不同每次。

【问题讨论】:

  • 那么你的问题是如何将变量传入类中?
  • 不是不要在类之间传递变量,而是要有一个类型类,它的类会根据我在检查器中添加的内容而改变,并且任何要添加的类都包含“Behaviour()”函数我在创建它时开发...所以我确定 Behaviour() 函数,但类可能会改变,我不知道我将如何拥有类,因为我将为游戏创建的每个对象都将包含NameBehaviour.cd 类并包含此函数。
  • 标签unity的第一句话是“不要在关于UNITY游戏引擎的问题上使用(改用unity3d)!!”跨度>

标签: c# unity3d


【解决方案1】:

我认为你应该创建一个接口来声明你想在不同类中使用的所有函数。

interface IBehaviour
{
   void Behaviour();
   void AnotherBehaviour();
}

通过这个,您可以定义实现接口的类的行为。

然后你的课程将是:

class MyClass1 : Ibehaviour
{
}

class MyClass2 : IBehaviour
{
}

除此之外,您还可以使用抽象类。互联网上有很多关于这些主题的好文章。

首先,我建议您熟悉 OOP 原则。
This 链接是一个很好的起点。

祝你好运。

【讨论】:

    【解决方案2】:

    谢谢大家,

    这个问题通过创建一个包含我们想要继承的类的全局(抽象)gameOject 来解决,然后每次附加到这个类的游戏对象调用(行为函数)它都会触发这个函数的任何覆盖对于这个对象。

    【讨论】:

      猜你喜欢
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多