既知の問題(3.6.10)


過去バージョンの不具合についてのアーカイブです。

もし、再発していましたら不具合フォーラムにご報告お願いいたします。

Arbor 3.6.10

InspectorからArborFSMやBehaviourTreeをコピー&ペーストするとグラフ内のデータスロットの接続が切れる

コピー&ペースト時のデータスロットと接続線の関連付け処理が不十分だったため、データスロットが接続データを追えなくなってしまう問題。

  • 対応状況:修正中。

暫定対処方法

  • Assets/Plugins/Arbor/Internal/Editor/Clipboard.csを開く。
  • 284行目(ComponentUtility.useEditorProcessor = cachedEnabled;の次の行)あたりに以下のコードを追加。
    for (int i = 0; i < dest.dataBranchRerouteNodes.count; i++)
    {
    	var rerouteNode = dest.dataBranchRerouteNodes[i];
    	if (rerouteNode != null)
    	{
    		RerouteSlot slot = rerouteNode.link;
    		if (slot != null)
    		{
    			slot.nodeGraph = dest;
    		}
    
    		IInputSlot inputSlot = slot as IInputSlot;
    		if (inputSlot != null)
    		{
    			DataBranch branch = inputSlot.GetInputBranch();
    			if (branch != null)
    			{
    				branch.inBehaviour = dest;
    				branch.inNodeID = rerouteNode.nodeID;
    			}
    		}
    
    		IOutputSlot outputSlot = slot as IOutputSlot;
    		if (outputSlot != null)
    		{
    			for (int j = 0; j < outputSlot.GetOutputBranchCount(); j++)
    			{
    				DataBranch branch = outputSlot.GetOutputBranch(j);
    				if (branch != null)
    				{
    					branch.outBehaviour = dest;
    					branch.outNodeID = rerouteNode.nodeID;
    				}
    			}
    		}
    	}
    }
    
  • (上記コード追加後の)454行目(static void CopyChildGraphs(NodeBehaviour dest)の前の行)あたりに以下のコードを追加。
    static void MoveDataSlots(NodeBehaviour behaviour)
    {
    	NodeGraph nodeGraph = behaviour.nodeGraph;
    
    	for (int i = 0; i < behaviour.dataSlotFieldCount; i++)
    	{
    		var dataSlotField = behaviour.GetDataSlotField(i);
    		if (dataSlotField != null)
    		{
    			DataSlot slot = dataSlotField.slot;
    			if (slot != null)
    			{
    				slot.nodeGraph = nodeGraph;
    			}
    
    			IInputSlot inputSlot = slot as IInputSlot;
    			if (inputSlot != null)
    			{
    				DataBranch branch = inputSlot.GetInputBranch();
    				if (branch != null && branch.inBehaviour != behaviour)
    				{
    					branch.inBehaviour = behaviour;
    				}
    			}
    
    			IOutputSlot outputSlot = slot as IOutputSlot;
    			if (outputSlot != null)
    			{
    				for (int j = 0; j < outputSlot.GetOutputBranchCount(); j++)
    				{
    					DataBranch branch = outputSlot.GetOutputBranch(j);
    					if (branch != null && branch.outBehaviour != behaviour)
    					{
    						branch.outBehaviour = behaviour;
    					}
    				}
    			}
    		}
    	}
    }
    
  • (上記コード追加後の)574行目(dest.expanded = expanded;の次の行)あたりに以下のコードを追加。
    MoveDataSlots(dest);
    
  • (上記コード追加後の)615行目(dest.Initialize(nodeGraph, nodeID);の次の行)あたりに以下のコードを追加。
    MoveDataSlots(dest);
    

Privacy Preference Center

Your Privacy

This site uses cookies to display contents and advertisements tailored to users, provide social media functions, measure advertisement impressions and clicks. We also gather information on users' site usage status and provide them to social media, advertisement distribution and data analysis partners. Each partner may use this information in combination with other information that the user provided to each partner or other information gathered when the user used the service of each partner.

Analytics, Ads