相关疑难解决方法(0)

保存游戏状态的最佳方法是什么?

我找到了在Unity3D游戏引擎中保存游戏数据的最佳方法.
首先,我使用了序列化对象BinaryFormatter.

但我听说这种方式存在一些问题,不适合保存.
那么,保存游戏状态的最佳或推荐方法是什么?

在我的例子中,保存格式必须是字节数组.

c# savestate unity-game-engine

10
推荐指数
1
解决办法
9348
查看次数

在非MonoBehaviour类中使用coroutine

你怎么能在一个非Monobehaviour阶级的实例中传递Monobehaviour?我找到了这个链接,TonyLi提到你可以通过一个Monobehaviour来启动和停止一个类的实例中的协同程序,但他没有说明你怎么能这样做.他做了这个theEvent.StartEvent(myMonoBehaviour); 但是他并没有表明他从哪里获得了我的神经行为.我在互联网上环顾四周,但我似乎无法找到.

  • 编辑

这是我想要做的.我想在一个类的实例中运行一个协同程序.我还希望能够在类的实例中停止协程.我想这样做,以便我的场景中没有任何具有大型管理器的对象,并且我可以将代码重用于我想以这种方式打乒乓的任何对象.代码在一个方向上移动一个Gameobject然后休息一下并将其向另一个方向移动并再次休息等等.但我不能从课外开始协同程序.

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

[RequireComponent (typeof(Image))]
public class SpecialBar : MonoBehaviour {

    public float rangeX;
    public float breakTime;
    public float step;
    float startProgress = 0.5f;
    PingPongGameObject pingPonger;

    Color[] teamColors = new Color[]{new Color(255,136,0),new Color(0,170,255)};

    void Start()
    {

        for(int i = 0; i < teamColors.Length; ++i)
        {
            teamColors[i] = StaticFunctions.NormalizeColor (teamColors[i]);
        }

        pingPonger = new PingPongGameObject (gameObject.transform.position,
            new Vector3(rangeX,0.0f,0.0f),
            gameObject,
            startProgress,
            breakTime,
            step
            );
    }
}
Run Code Online (Sandbox Code Playgroud)

第二堂课是我的协程所在的地方.

public class PingPongGameObject
{
    float step; …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

5
推荐指数
1
解决办法
5023
查看次数

“组件”不包含“启用”的定义并且没有扩展方法“启用”

我正在尝试禁用和禁用Component存储在List. 当我尝试这样做时,我收到以下错误:

“组件”不包含“已启用”的定义,并且找不到接受“组件”类型的第一个参数的扩展方法“已启用”(您是否缺少 using 指令或程序集引用?)

我也试过

 components[4].SetActive(false);
Run Code Online (Sandbox Code Playgroud)

并得到类似的错误

public List<Component> components;
...
components = new List<Component>();
components.Add(player.GetComponent<_2dxFX_HSV1>());
components.Add(player.GetComponent<_2dxFX_HSV2>());
components.Add(player.GetComponent<_2dxFX_HSV3>());
components.Add(player.GetComponent<_2dxFX_HSV4>());
components.Add(player.GetComponent<_2dxFX_Negative>());
components.Add(player.GetComponent<_2dxFX_Lightning>());
components.Add(player.GetComponent<_2dxFX_MetalFX>());
components.Add(player.GetComponent<_2dxFX_Pixel8bitsC64>());
components.Add(player.GetComponent<_2dxFX_GoldFX>());
components.Add(player.GetComponent<_2dxFX_Waterfall>());
components.Add(player.GetComponent<_2dxFX_Hologram>());
components.Add(player.GetComponent<_2dxFX_PlasmaRainbow>());

components[4].enabled = false;
Run Code Online (Sandbox Code Playgroud)

如何禁用Component列表中的类型?

c# arrays list unity-game-engine

3
推荐指数
1
解决办法
2585
查看次数

标签 统计

c# ×3

unity-game-engine ×3

arrays ×1

list ×1

savestate ×1