• 注册
欢迎加入behaviac Q&A网站。behaviac是腾讯开源组件https://github.com/TencentOpen/behaviac 官方网站:http://www.behaviac.com/,提供各种文档和教程及手册 为了您及时的获得您最新问题的评论或者回答,请提供并验证您的邮箱
欢迎来到 behaviac Q&A。 您在bbs里的问题,管理员会当下就收到通知,不要担心管理员看不到您的问题。也请在bbs里提供您的email,这样就可以第一时间收到关于回答,评论的email的通知了。 为了节省大家的时间,请表达好你的问题,提供必要上下文,版本号,平台信息,重现步骤等。

命名空间“XMLPluginBehaviac”已经包含了“behaviac_Agent”的定义

0 喜欢 0 不喜欢
164 浏览

 

 

//// ===============================================================================
// Project Name        :    TestBehaviac.cs
// Class Description   :    测试的行为树节点
// Author              :    John
// Create Time         :    2016年8月31日 星期三 农历七月廿九
// ===============================================================================
// Copyright © John 2016 . All rights reserved.
// ===============================================================================


[behaviac.TypeMetaInfo()]
public class TestBehaviac : behaviac.Agent
{
    [behaviac.MemberMetaInfo()]
    public int hp = 100;

    /// <summary>
    /// 是否死亡
    /// </summary>
    [behaviac.MemberMetaInfo()]
    public bool isDead = false;

    /// <summary>
    /// 改变血量
    /// </summary>
    /// <param name="_hp"></param>
    [behaviac.MethodMetaInfo()]
    public void ChangeHp(int _hp)
    {
        hp += _hp;
        if (hp <= 0)
        {
            Dead();
        }
    }

    /// <summary>
    /// 复活
    /// </summary>
    [behaviac.MethodMetaInfo()]
    public void ReBorn()
    {
        isDead = false;
        hp = 100;
    }

    /// <summary>
    /// 死亡
    /// </summary>
    private void Dead()
    {
        hp = 0;
        isDead = true;
    }
}

 

使用代码将这个类导出成XML。在编辑器里编译时,就报出错误:


c:\Users\limen\AppData\Local\Temp\Behaviac\TestBehaviac.cs(85,15): error CS0101: 命名空间“XMLPluginBehaviac”已经包含了“behaviac_Agent”的定义

转出的XMl内容为:

<?xml version="1.0" encoding="utf-8"?>
<!--EXPORTED BY TOOL, DON'T MODIFY IT!-->
<metas version="5" language="cs">
  <types>
    <enumtype Type="behaviac::EBTStatus" DisplayName="" Desc="">
      <enum NativeValue="behaviac::BT_INVALID" Value="BT_INVALID" DisplayName="BT_INVALID" Desc="BT_INVALID" />
      <enum NativeValue="behaviac::BT_SUCCESS" Value="BT_SUCCESS" DisplayName="BT_SUCCESS" Desc="BT_SUCCESS" />
      <enum NativeValue="behaviac::BT_FAILURE" Value="BT_FAILURE" DisplayName="BT_FAILURE" Desc="BT_FAILURE" />
      <enum NativeValue="behaviac::BT_RUNNING" Value="BT_RUNNING" DisplayName="BT_RUNNING" Desc="BT_RUNNING" />
    </enumtype>
    <struct Type="System::Object" DisplayName="Object" Desc="Object" IsRefType="true" />
  </types>
  <agents>
    <agent classfullname="DJTest" base="behaviac::Agent" DisplayName="DJTest" Desc="DJTest" IsRefType="true">
      <Member Name="hp" DisplayName="" Desc="" Type="int" Class="DJTest" Public="true" />
      <Member Name="isDead" DisplayName="" Desc="" Type="bool" Class="DJTest" Public="true" />
      <Method Name="ChangeHp" DisplayName="" Desc="" ReturnType="void" Class="DJTest" Public="true">
        <Param DisplayName="_hp" Desc="_hp" Type="int" />
      </Method>
      <Method Name="ReBorn" DisplayName="" Desc="" ReturnType="void" Class="DJTest" Public="true" />
    </agent>
    <agent classfullname="behaviac::Agent" DisplayName="behaviac.Agent" Desc="behaviac.Agent" IsRefType="true">
      <Method Name="LogMessage" DisplayName="" Desc="" ReturnType="void" Class="behaviac::Agent" Static="true" Public="true">
        <Param DisplayName="message" Desc="message" Type="string" />
      </Method>
      <Method Name="VectorLength" DisplayName="" Desc="" ReturnType="int" Class="behaviac::Agent" Static="true" Public="true">
        <Param DisplayName="vector" Desc="vector" Type="System.Collections.IList" />
      </Method>
      <Method Name="VectorAdd" DisplayName="" Desc="" ReturnType="void" Class="behaviac::Agent" Static="true" Public="true">
        <Param DisplayName="vector" Desc="vector" Type="System.Collections.IList" />
        <Param DisplayName="element" Desc="element" Type="System::Object*" />
      </Method>
      <Method Name="VectorRemove" DisplayName="" Desc="" ReturnType="void" Class="behaviac::Agent" Static="true" Public="true">
        <Param DisplayName="vector" Desc="vector" Type="System.Collections.IList" />
        <Param DisplayName="element" Desc="element" Type="System::Object*" />
      </Method>
      <Method Name="VectorContains" DisplayName="" Desc="" ReturnType="bool" Class="behaviac::Agent" Static="true" Public="true">
        <Param DisplayName="vector" Desc="vector" Type="System.Collections.IList" />
        <Param DisplayName="element" Desc="element" Type="System::Object*" />
      </Method>
      <Method Name="VectorClear" DisplayName="" Desc="" ReturnType="void" Class="behaviac::Agent" Static="true" Public="true">
        <Param DisplayName="vector" Desc="vector" Type="System.Collections.IList" />
      </Method>
    </agent>
  </agents>
  <instances>
    <instance name="DJTest" class="DJTest" DisplayName="DJTest" Desc="DJTest" />
  </instances>
</metas>

 

将下面的其他重复定义删除掉就好了:

<?xml version="1.0" encoding="utf-8"?>
<!--EXPORTED BY TOOL, DON'T MODIFY IT!-->
<metas version="5" language="cs">
  <types>
    <enumtype Type="behaviac::EBTStatus" DisplayName="" Desc="">
      <enum NativeValue="behaviac::BT_INVALID" Value="BT_INVALID" DisplayName="BT_INVALID" Desc="BT_INVALID" />
      <enum NativeValue="behaviac::BT_SUCCESS" Value="BT_SUCCESS" DisplayName="BT_SUCCESS" Desc="BT_SUCCESS" />
      <enum NativeValue="behaviac::BT_FAILURE" Value="BT_FAILURE" DisplayName="BT_FAILURE" Desc="BT_FAILURE" />
      <enum NativeValue="behaviac::BT_RUNNING" Value="BT_RUNNING" DisplayName="BT_RUNNING" Desc="BT_RUNNING" />
    </enumtype>
    <struct Type="System::Object" DisplayName="Object" Desc="Object" IsRefType="true" />
  </types>
  <agents>
    <agent classfullname="DJTest" base="behaviac::Agent" DisplayName="DJTest" Desc="DJTest" IsRefType="true">
      <Member Name="hp" DisplayName="" Desc="" Type="int" Class="DJTest" Public="true" />
      <Member Name="isDead" DisplayName="" Desc="" Type="bool" Class="DJTest" Public="true" />
      <Method Name="ChangeHp" DisplayName="" Desc="" ReturnType="void" Class="DJTest" Public="true">
        <Param DisplayName="_hp" Desc="_hp" Type="int" />
      </Method>
      <Method Name="ReBorn" DisplayName="" Desc="" ReturnType="void" Class="DJTest" Public="true" />
    </agent>
  </agents>
  <instances>
    <instance name="DJTest" class="DJTest" DisplayName="DJTest" Desc="DJTest" />
  </instances>
</metas>

 

可是,为什么呢?是不是导出姿势不对,导致继承的信息也导出成了XMl

最新提问 8月 31, 2016 用户: 邪让多杰 (140 分)
修改于 8月 31, 2016 用户:jonygli

2 个回答

0 喜欢 0 不喜欢
请使用最新版本3.5.12

这个应该已经fix
最新回答 8月 31, 2016 用户: jonygli (59,910 分)

目前已经是3.5.12版本。

 

下面是导出的代码:

 

if (GUILayout.Button("Do sth"))
        {
            behaviac.Config.IsLogging = true;

            behaviac.Workspace.Instance.FilePath = Application.dataPath;
            behaviac.Workspace.Instance.FileFormat = behaviac.Workspace.EFileFormat.EFF_xml;

            //register names
            behaviac.Agent.RegisterInstanceName<DJTest>("DJTest");
            behaviac.Workspace.Instance.ExportMetas("Code/Behaviac/xml/DJTest.xml");

            behaviac.Debug.Log("Behaviac meta data export over.");
            behaviac.Agent.SetIdMask(0xffffffff);
        }

 

好的,我来重现排查下。谢谢反馈
不能重现。

我有印象,这个应该已经fix的。

你要不试试把老的都删掉重新copy下确保使用的是最新版本。

否则还有的话,可以把你的项目打包qq群里发给群主排查下。
请问问题最终解决了吗?我遇到了一模一样的问题
请使用最新版本(3.5.12及以后)
这个已经解决。
我使用3.5.14版本 遇到这个问题
0 喜欢 0 不喜欢
最新回答 9月 22, 2016 用户: jonygli (59,910 分)
...