This commit is contained in:
Pang_mir 2025-05-09 15:40:34 +08:00
parent 7671958d48
commit f32a392bf9
1717 changed files with 686326 additions and 1144 deletions

View File

@ -0,0 +1,61 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 16
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 18bd840b706853d4a934ec3199f63a41, type: 3}
m_Name: Animancer Settings
m_EditorClassIdentifier:
_Data:
- rid: 1102212210127012099
- rid: 1102212210127012100
- rid: 1102212210127012101
- rid: 1102212210127012102
- rid: 1102212210127012103
- rid: 1102212210127012104
references:
version: 2
RefIds:
- rid: 1102212210127012099
type: {class: AnimancerComponentPreviewSettings, ns: Animancer.Editor.Previews, asm: Kybernetik.Animancer.Editor}
data:
_RepaintRate: 30
- rid: 1102212210127012100
type: {class: AnimancerGraphControls, ns: Animancer.Editor, asm: Kybernetik.Animancer.Editor}
data:
_FrameStep: 0.02
- rid: 1102212210127012101
type: {class: TransitionPreviewSettings, ns: Animancer.Editor.Previews, asm: Kybernetik.Animancer.Editor}
data:
_AutoClose: 1
_SceneLighting: 0
_ShowSkybox: 0
_FrameStep: 0.02
_SceneEnvironment: {fileID: 0}
_Models: []
- rid: 1102212210127012102
type: {class: SerializableEventSequenceDrawerSettings, ns: Animancer.Editor, asm: Kybernetik.Animancer.Editor}
data:
_HideEventCallbacks: 0
- rid: 1102212210127012103
type: {class: AnimationTimeAttributeSettings, ns: Animancer.Units.Editor, asm: Kybernetik.Animancer.Editor}
data:
showApproximations: 1
showNormalized: 1
showSeconds: 1
showFrames: 1
- rid: 1102212210127012104
type: {class: GenerateSpriteAnimationsSettings, ns: Animancer.Editor.Tools, asm: Kybernetik.Animancer.Editor}
data:
_FrameRate: 12
_HierarchyPath:
_TargetType:
_QualifiedName: UnityEngine.SpriteRenderer, UnityEngine.CoreModule, Version=0.0.0.0,
Culture=neutral, PublicKeyToken=null
_PropertyName: m_Sprite

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6bd895ef003a7dd42b1212005d9de2ab
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -10,11 +10,9 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7a686a47eee2fa44cb0a34b5d86e4d5e, type: 3}
m_Name: ShelfMachineBehaviour
m_Name: ForkAGV
m_EditorClassIdentifier:
_serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"selectionMode":1,"intCase":{},"enumCase":{"_type":"System.Enum","_name":""},"_position":{"x":564.0,"y":122.0},"$type":"NodeCanvas.BehaviourTrees.Switch"}],"connections":[],"canvasGroups":[],"localBlackboard":{"_variables":{"Enum
Case":{"_name":"Enum Case","_id":"765c30f0-31a8-432d-8a9e-1a9dbf4d0337","$type":"NodeCanvas.Framework.Variable`1[[System.Enum,
mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"}}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}'
_serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"_position":{"x":360.0,"y":93.0},"$type":"NodeCanvas.BehaviourTrees.Sequencer"},{"_position":{"x":231.0,"y":269.0},"$type":"NodeCanvas.BehaviourTrees.ActionNode"}],"connections":[],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}'
_objectReferences: []
_graphSource:
_version: 3.32

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5c871cb75b90f5f48b64f80b3e342234
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -85,7 +85,7 @@ MonoBehaviour:
m_Version: 3
m_AnimClip: {fileID: 0}
m_Locked: 0
m_Muted: 0
m_Muted: 1
m_CustomPlayableFullTypename:
m_Curves: {fileID: 0}
m_Parent: {fileID: 11400000}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 683d8c59aacb89d45a6458499abf5e4a
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,24 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7a686a47eee2fa44cb0a34b5d86e4d5e, type: 3}
m_Name: ForkAGV
m_EditorClassIdentifier:
_serializedGraph: '{"type":"NodeCanvas.BehaviourTrees.BehaviourTree","nodes":[{"selectionMode":1,"intCase":{"_name":""},"enumCase":{"_type":"System.Enum","_name":"action","_targetVariableID":"6108051d-81ff-425d-97a4-c9791ddb388b"},"_position":{"x":705.0,"y":37.0},"$type":"NodeCanvas.BehaviourTrees.Switch","$id":"0"},{"_action":{"method":{"_baseInfo":"GameLogic.Game.Core.Actor.ForkAgvActor|Standby|System.Void","_paramsInfo":""},"parameters":[],"returnValue":{},"$type":"NodeCanvas.Tasks.Actions.ExecuteFunction_Multiplatform"},"_position":{"x":198.0,"y":233.0},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"1"},{"_action":{"method":{"_baseInfo":"GameLogic.Game.Core.Actor.ForkAgvActor|Taking|System.Void","_paramsInfo":""},"parameters":[],"returnValue":{},"$type":"NodeCanvas.Tasks.Actions.ExecuteFunction_Multiplatform"},"_position":{"x":327.0,"y":278.0},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"2"},{"_action":{"method":{"_baseInfo":"GameLogic.Game.Core.Actor.ForkAgvActor|ApplyTake|System.Void","_paramsInfo":""},"parameters":[],"returnValue":{},"$type":"NodeCanvas.Tasks.Actions.ExecuteFunction_Multiplatform"},"_position":{"x":442.0,"y":286.0},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"3"},{"_action":{"method":{"_baseInfo":"GameLogic.Game.Core.Actor.ForkAgvActor|TakeFinish|System.Void","_paramsInfo":""},"parameters":[],"returnValue":{},"$type":"NodeCanvas.Tasks.Actions.ExecuteFunction_Multiplatform"},"_position":{"x":587.0,"y":286.0},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"4"},{"_action":{"method":{"_baseInfo":"GameLogic.Game.Core.Actor.ForkAgvActor|Putting|System.Void","_paramsInfo":""},"parameters":[],"returnValue":{},"$type":"NodeCanvas.Tasks.Actions.ExecuteFunction_Multiplatform"},"_position":{"x":770.0,"y":287.0},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"5"},{"_action":{"method":{"_baseInfo":"GameLogic.Game.Core.Actor.ForkAgvActor|ApplyPut|System.Void","_paramsInfo":""},"parameters":[],"returnValue":{},"$type":"NodeCanvas.Tasks.Actions.ExecuteFunction_Multiplatform"},"_position":{"x":897.0,"y":277.0},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"6"},{"_action":{"method":{"_baseInfo":"GameLogic.Game.Core.Actor.ForkAgvActor|PutFinish|System.Void","_paramsInfo":""},"parameters":[],"returnValue":{},"$type":"NodeCanvas.Tasks.Actions.ExecuteFunction_Multiplatform"},"_position":{"x":1017.0,"y":276.0},"$type":"NodeCanvas.BehaviourTrees.ActionNode","$id":"7"}],"connections":[{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"1"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"2"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"3"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"4"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"5"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"6"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"},{"_sourceNode":{"$ref":"0"},"_targetNode":{"$ref":"7"},"$type":"NodeCanvas.BehaviourTrees.BTConnection"}],"canvasGroups":[],"localBlackboard":{"_variables":{}},"derivedData":{"repeat":true,"$type":"NodeCanvas.BehaviourTrees.BehaviourTree+DerivedSerializationData"}}'
_objectReferences: []
_graphSource:
_version: 3.32
_category:
_comments:
_translation: {x: -397, y: 30}
_zoomFactor: 1
_haltSerialization: 0
_externalSerializationFile: {fileID: 0}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b74e2974e4a134e4f9e3efdc39fbd559
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 38f70f293f649324b99d4d7f1f9bede0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,115 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2dd819b1a17000747b98d533a289c5eb, type: 3}
m_Name: shelfConfig_1
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects:
- {fileID: 7400000, guid: c005c0711278dbd4eafdb92b99794612, type: 2}
- {fileID: 7400000, guid: 35f948453d152a04986763f636b3c194, type: 2}
- {fileID: 7400000, guid: e9fa085935da61b4ba9a30d5b095cb45, type: 2}
- {fileID: 7400000, guid: c7c24aeb0ca291d4583b5e28baf58f80, type: 2}
- {fileID: 7400000, guid: b5ae0aa7adc17f54988962e81404e636, type: 2}
- {fileID: 7400000, guid: d933409f8eec3814bad938a7aad0ab37, type: 2}
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: shelfAnimDatas
Entry: 7
Data: 0|System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[GameLogic.ShelfRowAnimData,
Assembly-CSharp]], mscorlib
- Name: comparer
Entry: 7
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.Int32,
mscorlib]], mscorlib
- Name:
Entry: 8
Data:
- Name:
Entry: 12
Data: 3
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 3
- Name: $v
Entry: 7
Data: 2|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 10
Data: 0
- Name: shrink
Entry: 10
Data: 1
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 1
- Name: $v
Entry: 7
Data: 3|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 10
Data: 2
- Name: shrink
Entry: 10
Data: 3
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 4
- Name: $v
Entry: 7
Data: 4|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 10
Data: 4
- Name: shrink
Entry: 10
Data: 5
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
deviceCode: DDJ01
deviceType: STACKER
groups: 010000000300000004000000

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: cab58bc1ec41bb7448d685f50bb5708b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,107 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2dd819b1a17000747b98d533a289c5eb, type: 3}
m_Name: shelfConfig_2
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: shelfAnimDatas
Entry: 7
Data: 0|System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[GameLogic.ShelfRowAnimData,
Assembly-CSharp]], mscorlib
- Name: comparer
Entry: 7
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.Int32,
mscorlib]], mscorlib
- Name:
Entry: 8
Data:
- Name:
Entry: 12
Data: 3
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 6
- Name: $v
Entry: 7
Data: 2|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 5
- Name: $v
Entry: 7
Data: 3|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 7
- Name: $v
Entry: 7
Data: 4|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
groups: 050000000600000007000000

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 33bc2183695eea945a4d58fcb117937e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,107 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2dd819b1a17000747b98d533a289c5eb, type: 3}
m_Name: shelfConfig_3
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: shelfAnimDatas
Entry: 7
Data: 0|System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[GameLogic.ShelfRowAnimData,
Assembly-CSharp]], mscorlib
- Name: comparer
Entry: 7
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.Int32,
mscorlib]], mscorlib
- Name:
Entry: 8
Data:
- Name:
Entry: 12
Data: 3
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 11
- Name: $v
Entry: 7
Data: 2|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 9
- Name: $v
Entry: 7
Data: 3|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 12
- Name: $v
Entry: 7
Data: 4|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
groups: 090000000b0000000c000000

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bddc52252ed26b8409ddb979e7c6d277
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,128 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2dd819b1a17000747b98d533a289c5eb, type: 3}
m_Name: shelfConfig_4
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: shelfAnimDatas
Entry: 7
Data: 0|System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[GameLogic.ShelfRowAnimData,
Assembly-CSharp]], mscorlib
- Name: comparer
Entry: 7
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.Int32,
mscorlib]], mscorlib
- Name:
Entry: 8
Data:
- Name:
Entry: 12
Data: 4
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 13
- Name: $v
Entry: 7
Data: 2|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 15
- Name: $v
Entry: 7
Data: 3|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 14
- Name: $v
Entry: 7
Data: 4|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 16
- Name: $v
Entry: 7
Data: 5|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
groups: 0d0000000e0000000f00000010000000

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9b9c33b937c2c70488884d364858a4d3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,107 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2dd819b1a17000747b98d533a289c5eb, type: 3}
m_Name: shelfConfig_5
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: shelfAnimDatas
Entry: 7
Data: 0|System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[GameLogic.ShelfRowAnimData,
Assembly-CSharp]], mscorlib
- Name: comparer
Entry: 7
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.Int32,
mscorlib]], mscorlib
- Name:
Entry: 8
Data:
- Name:
Entry: 12
Data: 3
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 19
- Name: $v
Entry: 7
Data: 2|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 17
- Name: $v
Entry: 7
Data: 3|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 20
- Name: $v
Entry: 7
Data: 4|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
groups: 110000001300000014000000

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 73f70759e8ade1645a982f72ffe7ea7b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,107 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2dd819b1a17000747b98d533a289c5eb, type: 3}
m_Name: shelfConfig_6
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: shelfAnimDatas
Entry: 7
Data: 0|System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[GameLogic.ShelfRowAnimData,
Assembly-CSharp]], mscorlib
- Name: comparer
Entry: 7
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.Int32,
mscorlib]], mscorlib
- Name:
Entry: 8
Data:
- Name:
Entry: 12
Data: 3
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 22
- Name: $v
Entry: 7
Data: 2|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 21
- Name: $v
Entry: 7
Data: 3|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 23
- Name: $v
Entry: 7
Data: 4|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
groups: 150000001600000017000000

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fa210a939f5b7104ba4413a72638e695
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,107 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2dd819b1a17000747b98d533a289c5eb, type: 3}
m_Name: shelfConfig_7
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: shelfAnimDatas
Entry: 7
Data: 0|System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[GameLogic.ShelfRowAnimData,
Assembly-CSharp]], mscorlib
- Name: comparer
Entry: 7
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.Int32,
mscorlib]], mscorlib
- Name:
Entry: 8
Data:
- Name:
Entry: 12
Data: 3
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 27
- Name: $v
Entry: 7
Data: 2|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 25
- Name: $v
Entry: 7
Data: 3|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 28
- Name: $v
Entry: 7
Data: 4|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
groups: 190000001b0000001c000000

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7a9b8a706eab1c74f8f26c28448f41c9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,107 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2dd819b1a17000747b98d533a289c5eb, type: 3}
m_Name: shelfConfig_8
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects: []
SerializedBytesString:
Prefab: {fileID: 0}
PrefabModificationsReferencedUnityObjects: []
PrefabModifications: []
SerializationNodes:
- Name: shelfAnimDatas
Entry: 7
Data: 0|System.Collections.Generic.Dictionary`2[[System.Int32, mscorlib],[GameLogic.ShelfRowAnimData,
Assembly-CSharp]], mscorlib
- Name: comparer
Entry: 7
Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.Int32,
mscorlib]], mscorlib
- Name:
Entry: 8
Data:
- Name:
Entry: 12
Data: 3
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 30
- Name: $v
Entry: 7
Data: 2|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 29
- Name: $v
Entry: 7
Data: 3|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 3
Data: 31
- Name: $v
Entry: 7
Data: 4|GameLogic.ShelfRowAnimData, Assembly-CSharp
- Name: stretch
Entry: 6
Data:
- Name: shrink
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
groups: 1d0000001e0000001f000000

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 803573dde1fe883479b2384da9193dbf
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,38 @@
using Sirenix.OdinInspector;
namespace GameLogic.Game.Common.Enum
{
public enum CarTaskStatusEnum
{
//待机
[LabelText("待机")] Standby = 0,
//取货中
[LabelText("取货中")] Taking = 1,
//申请取货
[LabelText("申请取货")] ApplyTake = 2,
//取货完成
[LabelText("取货完成")] TakeFinished = 3,
//放货中
[LabelText("放货中")] Put = 4,
//申请放货
[LabelText("申请放货")] ApplyPut = 5,
//放货完成
[LabelText("放货完成")] PutFinished = 6,
//任务异常完成
[LabelText("任务异常完成")] ErorrFinnshed = 7,
//异常
[LabelText("异常")] Exception = 8,
//作废
[LabelText("作废")] Derrecate = 9,
[LabelText("下发")] Sent = 10,
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e53536149b914d3ea29ba75a286d8b16
timeCreated: 1746687476

View File

@ -1,9 +0,0 @@
using Sirenix.OdinInspector;
using UnityEngine;
public enum ShelfActionType
{
[LabelText("ÎÞ")]None,
[LabelText("×°»õ")]Load,
[LabelText("ж»õ")]UnLoad
}

View File

@ -0,0 +1,12 @@
using Sirenix.OdinInspector;
using UnityEngine;
namespace GameLogic
{
public enum ShelfToolActionType
{
[LabelText("ÎÞ")] None,
[LabelText("×°»õ")] Load,
[LabelText("ж»õ")] UnLoad
}
}

View File

@ -0,0 +1,10 @@
using Sirenix.OdinInspector;
namespace GameLogic
{
public enum ToolActionType : int
{
[LabelText("放下")]PutDown = 0,
[LabelText("拿起")]PickUp = 1,
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2bcef26c07d84c549bda615a07a7a513
timeCreated: 1746688068

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8bcec70abd0c9b04baa65d498b358755
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8095eb779eeebb6489b408a4ffa678c0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,7 +1,33 @@
using System;
using Sirenix.OdinInspector;
using UnityEngine;
public class Actor : MonoBehaviour
namespace GameLogic
{
public class Actor : MonoBehaviour
{
[LabelText("标识id")]public int _id = 0;
#region
protected virtual void OnLoad(){}
protected virtual void OnUpdate(){}
protected virtual void RegisterEvent(){}
private void Awake()
{
OnLoad();
RegisterEvent();
}
private void Update()
{
}
#endregion
}
}

View File

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
@ -6,10 +7,14 @@ using Cysharp.Threading.Tasks;
using Sirenix.OdinInspector;
using UnityEngine;
public class ActorMgr : Singleton<ActorMgr>
namespace GameLogic
{
[ShowInInspector,LabelText("所有货物")]private Dictionary<string,ContainerInfo> _containerInfos = new Dictionary<string,ContainerInfo>();
[ShowInInspector,LabelText("所有货架")]private List<ShelfActor> _shelfActors = new List<ShelfActor>();
public class ActorMgr : Singleton<ActorMgr>
{
[ShowInInspector, LabelText("所有货物")]
private Dictionary<string, ContainerInfo> _containerInfos = new Dictionary<string, ContainerInfo>();
[ShowInInspector, LabelText("所有货架")] private List<ShelfActor> _shelfActors = new List<ShelfActor>();
protected override void OnLoad()
@ -31,6 +36,43 @@ public class ActorMgr : Singleton<ActorMgr>
_shelfActors = shelfs.ToList();
}
protected override void OnUpdate()
{
base.OnUpdate();
// if (Input.GetKeyDown(KeyCode.R))
// {
// try
// {
// Debug.LogWarning("取货03-01-02");
// var co = _containerInfos["03-01-02"];
// //co.shelf.LoadTest(co,gameObject);
// }
// catch (Exception e)
// {
// Debug.LogWarning("货物不存在");
// throw;
// }
//
// }
//
// if (Input.GetKeyDown(KeyCode.T))
// {
// try
// {
// Debug.LogWarning("取货03-01-02");
// var co = _containerInfos["03-01-02"];
// co.shelf.UnLoadTest(co);
// }
// catch (Exception e)
// {
// Debug.LogWarning("货物不存在");
// throw;
// }
//
// }
}
/// <summary>
/// 生成容器
@ -51,15 +93,15 @@ public class ActorMgr : Singleton<ActorMgr>
int row = int.Parse(groups[0]);
int column = int.Parse(groups[1]);
int layer = int.Parse(groups[2]);
var containerInfo = ContainerFactory.CreateInfo(obj, GetShelfBySort(row),row,column,layer);
_containerInfos.Add(obj.name,containerInfo);
var containerInfo = ContainerFactory.CreateInfo(obj, GetShelfBySort(row), row, column, layer);
_containerInfos.Add(obj.name, containerInfo);
}
}
}
#region
/// <summary>
/// 根据排号 获取 相应的货架
/// </summary>
@ -79,12 +121,5 @@ public class ActorMgr : Singleton<ActorMgr>
}
#endregion
}
}

View File

@ -0,0 +1,132 @@
using System;
using System.Collections.Generic;
using BestHTTP;
using EasyInject.Attributes;
using GameLogic.Game.Data;
using GameLogic.Origin.data;
using Newtonsoft.Json.Linq;
using Sirenix.OdinInspector;
using UnityEngine;
public abstract class AgvActor : Actor
{
[LabelText("任务信息")] AgvTaskInfo _taskInfo;
[LabelText("异常信息")] string _errorMessage;
[Autowired] NetWorkComponent _netWork;
[LabelText("允许取货点位"),SerializeField] List<string> allowRows;
/// <summary>
/// 待机
/// </summary>
public void Standby()
{
//AgvTaskListData.AgvTaskList;
}
/// <summary>
/// 取货中
/// </summary>
public void Taking()
{
Debug.Log("取货中");
SendFeedBack();
}
/// <summary>
/// 放货中
/// </summary>
public void Putting()
{
Debug.Log("放货中");
SendFeedBack();
}
/// <summary>
/// 申请取货
/// </summary>
public void ApplyTake()
{
Debug.Log("申请取货");
SendFeedBack();
}
/// <summary>
/// 取货完成
/// </summary>
public void TakeFinish()
{
Debug.Log("取货完成");
SendFeedBack();
}
/// <summary>
/// 申请放货
/// </summary>
public void ApplyPut()
{
Debug.Log("申请放货");
SendFeedBack();
}
/// <summary>
/// 放货完成
/// </summary>
public void PutFinish()
{
Debug.Log("放货完成");
SendFeedBack();
}
/// <summary>
/// 反馈当前任务处理状态
/// </summary>
public void SendFeedBack()
{
AgvTaskFeedBack feedBackDto = new AgvTaskFeedBack
{
feedbackStatus = _taskInfo.agvTaskStatus.ToString(),
taskCode = _taskInfo.instructionCode,
carId = _taskInfo.carId
};
_netWork.RemoteFeedBackAgvTaskStatus(feedBackDto, OnFeedBack);
}
/// <summary>
/// 接受反馈回调信息
/// </summary>
private void OnFeedBack(HTTPRequest originalRequest, HTTPResponse response)
{
if (response == null)
{
return;
}
//请求成功
if (response.IsSuccess)
{
try
{
//解析反馈
JObject result = JObject.Parse(response.DataAsText);
bool isSuccesss = bool.Parse(result["success"].ToString());
//后台处理反馈成功
if (isSuccesss)
{
//如果是放货完成动作了
if (_taskInfo.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.PUT_FINISHED)
{
//赋值的变相清空
_taskInfo = new AgvTaskInfo();
}
}
else
{
_errorMessage = string.Format("{0} : 任务反馈异常 {1}",name,response.DataAsText);
Debug.LogError(name + " 反馈 =" + response.DataAsText);
}
}
catch (Exception ex)
{
}
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: dc4c3161802fdeb4b99115b0b5e13adf

View File

@ -0,0 +1,10 @@
namespace GameLogic.Game.Core.Actor
{
/// <summary>
/// »õ²æÊ½AGV
/// </summary>
public class ForkAgvActor: AgvActor
{
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8025c43585234c27af04174c38803211
timeCreated: 1746688482

View File

@ -2,15 +2,93 @@ using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
public class ShelfActor : Actor
namespace GameLogic
{
[LabelText("货物所属工具组"),ShowInInspector] public List<int> _group = new List<int>();
public void LoadContainer()
public class ShelfActor : Actor
{
[LabelText("配置文件"),ShowInInspector] public So_ShelfConfig _shelfConfig;
[LabelText("货物所属工具组"),ShowInInspector] public Dictionary<string,Transform> _stations = new Dictionary<string, Transform>();
[ShowInInspector]private ContainerInfo _currentContainerInfo = null;
private ShelfMachineToolActor _shelfMachineToolActor;
protected override void OnLoad()
{
base.OnLoad();
_shelfConfig = Resources.Load<So_ShelfConfig>(AssetLocationSetting.SoSelfConfig + _id);
_shelfMachineToolActor = GetComponentInChildren<ShelfMachineToolActor>();
InitStations();
}
/// <summary>
/// 初始化装取货站台数据
/// </summary>
private void InitStations()
{
var stations = GameObject.FindGameObjectsWithTag(TagSetting.ShelfStation);
Debug.Log(stations.Length);
foreach (var stationGo in stations)
{
var stationData = stationGo.name.Split('-');
int row = int.Parse(stationData[0]);
int column = int.Parse(stationData[1]);
int layer = int.Parse(stationData[2]);
if (!IsContainGroup(row)) continue;
_stations.Add(stationGo.name,stationGo.transform);
}
}
/// <summary>
/// 取货
/// </summary>
public void LoadContainer(string station,GameObject container,ContainerInfo coInfo)
{
}
/// <summary>
/// 装货
/// </summary>
public void LoadTest(ContainerInfo container)
{
Debug.LogWarning("取货成功");
_currentContainerInfo = container;
Transform station = null;
foreach (var stationT in _stations.Values)
{
var containerPrefab = Resources.Load<GameObject>(AssetLocationSetting.ContainerPath);
GameObject go = Instantiate(containerPrefab);
container.container = go;
go.SetTransformNoScale(stationT);
station = stationT;
}
_shelfMachineToolActor.Load(station,container,_shelfConfig);
}
/// <summary>
/// 取货
/// </summary>
public void UnLoadTest(ContainerInfo container)
{
Debug.LogWarning("取货成功");
_currentContainerInfo = container;
Transform station = null;
foreach (var stationT in _stations.Values)
{
// var containerPrefab = Resources.Load<GameObject>(AssetLocationSetting.ContainerPath);
// GameObject go = Instantiate(containerPrefab);
// container.container = go;
// go.SetTransformNoScale(stationT);
station = stationT;
}
_shelfMachineToolActor.UnLoad(station,container,_shelfConfig);
}
@ -21,6 +99,11 @@ public class ShelfActor : Actor
/// <returns></returns>
public bool IsContainGroup(int group)
{
return _group.Contains(group);
return _shelfConfig.groups.Contains(group);
}
}
}

View File

@ -0,0 +1,346 @@
using System;
using Animancer;
using GameLogic;
using NodeCanvas.BehaviourTrees;
using PrimeTween;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Serialization;
namespace GameLogic
{
public class ShelfMachineToolActor : Actor
{
[ShowInInspector,ReadOnly]private BehaviourTreeOwner _behaviourTreeOwner;
[ShowInInspector,ReadOnly]private ShelfToolActionType _actionType = ShelfToolActionType.None;
[ShowInInspector,ReadOnly] private float _moveSpeed = 200;
[ShowInInspector,ReadOnly] private float _moveSeconds = 0;
[Title("外部赋值参数")]
[ShowInInspector,ReadOnly] private So_ShelfConfig _shelfconfig = null;
[ShowInInspector,ReadOnly] private ShelfRowAnimData _shelfRowAnimData = null;
[ShowInInspector,ReadOnly]private Transform _station;
[ShowInInspector,ReadOnly]private ContainerInfo _currentContainerInfo;
[Title("私有参数")]
[ShowInInspector,ReadOnly] private bool _isPlayingAnim = false;
[ShowInInspector,ReadOnly] private Transform _containerPlaceToolParent = null;
[LabelText("堆垛机拿取货物动画上偏移"),ShowInInspector,ReadOnly] public float _loadPickUpOffest = 0.2F;
[LabelText("堆垛机放下货物动画下偏移"),ShowInInspector,ReadOnly] public float _loadPutDownOffest = 0.2F;
[LabelText("堆垛机卸货拿取货物动画上偏移"),ShowInInspector,ReadOnly] public float _UnloadPickUpOffest = 0.2F;
[LabelText("堆垛机卸货放下货物动画下偏移"),ShowInInspector,ReadOnly] public float _UnloadPutDownOffest = 0.2F;
[ShowInInspector] private Vector3 _initPosition;
[ShowInInspector,ReadOnly]private bool _isRunning = false;
[ShowInInspector] private Tween _defaultPosTween;
[Title("一些组件参数")]
private Transform _caroparent;
private AnimancerComponent _animancer;
[Title("装货行为树参数")]
[ShowInInspector,BoxGroup("Load"),ReadOnly]private bool _isEnableArriveStationPositionComplete = false;
[ShowInInspector,BoxGroup("Load"),ReadOnly]private bool _isEnablePickUpAnimationComplete = false;
[ShowInInspector,BoxGroup("Load"),ReadOnly]private bool _isEnableArriveContainerPositionComplete = false;
[ShowInInspector,BoxGroup("Load"),ReadOnly]private bool _isEnablePutDownAnimationComplete = false;
protected override void OnLoad()
{
base.OnLoad();
_behaviourTreeOwner = GetComponent<BehaviourTreeOwner>();
_animancer = GetComponent<AnimancerComponent>();
_caroparent = transform.Find("Caro-parent").Find("Cargo");
_containerPlaceToolParent = _caroparent.Find("fork").Find("k");
_loadPickUpOffest = 0.1F;
_loadPutDownOffest = 0.2F;
_UnloadPickUpOffest = 0.08F;
_UnloadPutDownOffest = 0.2F;
}
protected override void RegisterEvent()
{
base.RegisterEvent();
}
private void OnDestroy()
{
// GameEvent.RemoveListener(EventSetting.PlayStretchComplete,PlayLoadStretchComplete);
}
#region
/// <summary>
/// 计算速度
/// </summary>
/// <param name="distance"></param>
private void CalculateSpeedSecond(float distance)
{
_moveSeconds = distance / (_moveSpeed*Time.deltaTime);
}
private AnimationEvent[] GetAnimationEvent(string functionName,ToolActionType actionType)
{
AnimationEvent evt = _shelfRowAnimData.stretch.events[0];
evt.functionName = functionName;
evt.intParameter = (int)actionType;
return new AnimationEvent[] { evt };
}
private void SetUp(Transform station, ContainerInfo containerInfo, So_ShelfConfig config)
{
_station = station;
_currentContainerInfo = containerInfo;
_shelfconfig = config;
}
private void ResetRuntimeParam()
{
_isPlayingAnim = false;
}
private void Reset()
{
_isRunning = false;
_isEnableArriveStationPositionComplete = false;
_isEnablePickUpAnimationComplete = false;
_isEnableArriveContainerPositionComplete = false;
_isEnablePutDownAnimationComplete = false;
_shelfconfig = null;
_shelfRowAnimData = null;
_station = null;
_currentContainerInfo = null;
}
#endregion
#region
/// <summary>
/// 装货
/// </summary>
public void Load(Transform station,ContainerInfo containerInfo,So_ShelfConfig config)
{
if(_isRunning) return;
_actionType = ShelfToolActionType.Load;
SetUp(station, containerInfo, config);
_behaviourTreeOwner.StartBehaviour();
}
/// <summary>
/// 装货开始
/// </summary>
public void LoadStart()
{
GameEvent.AddListener(EventSetting.PlayStretchPickUpComplete,PlayLoadStretchPickUpComplete);
GameEvent.AddListener(EventSetting.PlayStretchPutDownComplete,PlayLoadStretchPutDownComplete);
GameEvent.AddListener(EventSetting.PlayShrinkPickUpComplete,PlayShrinkPickUpComplete);
GameEvent.AddListener(EventSetting.PlayShrinkPutDownComplete,PlayShrinkPutDownComplete);
_initPosition = transform.position;
Tween.StopAll(transform);
}
/// <summary>
/// 结束装货
/// </summary>
public void LoadEnd()
{
GameEvent.RemoveListener(EventSetting.PlayStretchPickUpComplete,PlayLoadStretchPickUpComplete);
GameEvent.RemoveListener(EventSetting.PlayStretchPutDownComplete,PlayLoadStretchPickUpComplete);
GameEvent.RemoveListener(EventSetting.PlayShrinkPickUpComplete,PlayShrinkPickUpComplete);
GameEvent.RemoveListener(EventSetting.PlayShrinkPutDownComplete,PlayShrinkPutDownComplete);
Reset();
Debug.Log("结束装货");
}
#endregion
#region
/// <summary>
/// 取货
/// </summary>
public void UnLoad(Transform station,ContainerInfo containerInfo,So_ShelfConfig config)
{
if(_isRunning) return;
_actionType = ShelfToolActionType.UnLoad;
SetUp(station, containerInfo, config);
_behaviourTreeOwner.StartBehaviour();
}
/// <summary>
/// 1: 取货开始
/// </summary>
public void UnLoadStart()
{
GameEvent.AddListener(EventSetting.PlayStretchPickUpComplete,PlayUnLoadStretchPickUpComplete);
GameEvent.AddListener(EventSetting.PlayStretchPutDownComplete, PlayUnLoadStretchPutDownComplete);
GameEvent.AddListener(EventSetting.PlayShrinkPickUpComplete,PlayShrinkPickUpComplete);
GameEvent.AddListener(EventSetting.PlayShrinkPutDownComplete,PlayShrinkPutDownComplete);
_initPosition = transform.position;
Tween.StopAll(transform);
}
/// <summary>
/// 6取货结束
/// </summary>
public void UnLoadEnd()
{
GameEvent.RemoveListener(EventSetting.PlayStretchPickUpComplete,PlayUnLoadStretchPickUpComplete);
GameEvent.RemoveListener(EventSetting.PlayStretchPutDownComplete, PlayUnLoadStretchPutDownComplete);
GameEvent.RemoveListener(EventSetting.PlayShrinkPickUpComplete,PlayShrinkPickUpComplete);
GameEvent.RemoveListener(EventSetting.PlayShrinkPutDownComplete,PlayShrinkPutDownComplete);
Reset();
Debug.Log("结束卸货");
}
#endregion
#region
private void PlayLoadStretchPickUpComplete(object data)
{
Debug.Log("伸动画完成");
_currentContainerInfo.container.SetParent(_containerPlaceToolParent);
Tween.LocalPosition(_currentContainerInfo.container.transform, Vector3.zero, 0.1f);
Tween.PositionY(_caroparent, _caroparent.transform.position.y+_loadPickUpOffest, 1f).OnComplete(() =>
{
_shelfRowAnimData.shrink.events = GetAnimationEvent("PlayShrinkComplete",ToolActionType.PickUp);
_animancer.Play(_shelfRowAnimData.shrink);
});
}
private void PlayLoadStretchPutDownComplete(object data)
{
Debug.Log("开始放置动画");
//Tween.LocalPosition(_currentContainerInfo.container.transform, Vector3.zero, 0.1f);
Tween.PositionY(_caroparent, _caroparent.transform.position.y - _loadPutDownOffest + 0.08f, 1f).OnComplete(() =>
{
_currentContainerInfo.container.gameObject.SetParent(_currentContainerInfo.mapContainer.transform);
_shelfRowAnimData.shrink.events = GetAnimationEvent("PlayShrinkComplete",ToolActionType.PutDown);
_animancer.Play(_shelfRowAnimData.shrink);
});
}
private void PlayUnLoadStretchPickUpComplete(object data)
{
Debug.Log("伸动画完成");
_currentContainerInfo.container.SetParent(_containerPlaceToolParent);
Tween.LocalPosition(_currentContainerInfo.container.transform, Vector3.zero, 0.1f);
Tween.PositionY(_caroparent, _caroparent.transform.position.y+_loadPickUpOffest, 1f).OnComplete(() =>
{
_shelfRowAnimData.shrink.events = GetAnimationEvent("PlayShrinkComplete",ToolActionType.PickUp);
_animancer.Play(_shelfRowAnimData.shrink);
});
}
private void PlayUnLoadStretchPutDownComplete(object data)
{
Debug.Log("开始放置动画");
//Tween.LocalPosition(_currentContainerInfo.container.transform, Vector3.zero, 0.1f);
Tween.PositionY(_caroparent, _caroparent.transform.position.y - _loadPutDownOffest + 0.08f, 1f).OnComplete(() =>
{
_currentContainerInfo.container.gameObject.SetParent(_currentContainerInfo.mapContainer.transform);
_shelfRowAnimData.shrink.events = GetAnimationEvent("PlayShrinkComplete",ToolActionType.PutDown);
_animancer.Play(_shelfRowAnimData.shrink);
});
}
#endregion
#region
public void PlayShrinkPickUpComplete(object data)
{
_isEnablePickUpAnimationComplete = true;
ResetRuntimeParam();
}
public void PlayShrinkPutDownComplete(object data)
{
_isEnablePutDownAnimationComplete= true;
ResetRuntimeParam();
}
#endregion
#region
/// <summary>
/// 步骤: 移动到站台位置
/// </summary>
/// <returns></returns>
public bool EnableArriveStationPositionComplete(float offest)
{
_isRunning = true;
if (_isEnableArriveStationPositionComplete) return true;
if (!_isPlayingAnim)
{
_isPlayingAnim = true;
CalculateSpeedSecond(Vector3.Distance(transform.position, _station.position));
Tween.PositionX(transform, _station.position.x, _moveSeconds,Ease.Linear).OnComplete(()=>
{
Debug.Log("到达站点位置");
_isEnableArriveStationPositionComplete = true;
ResetRuntimeParam();
});
Tween.PositionY(_caroparent, _station.position.y + offest, _moveSeconds, Ease.Linear);
}
return _isEnableArriveStationPositionComplete;
}
/// <summary>
/// 步骤: 开启装货动画
/// </summary>
/// <returns></returns>
public bool EnableLoadPickUpAnimation()
{
if (_isEnablePickUpAnimationComplete) return true;
if (!_isPlayingAnim)
{
Debug.Log("开始装货");
_isPlayingAnim = true;
_shelfRowAnimData = _shelfconfig.GetAnimaData(DataUtility.GetRow(_station.name));
_shelfRowAnimData.stretch.events = GetAnimationEvent("PlayStretchComplete",ToolActionType.PickUp);
_animancer.Play(_shelfRowAnimData.stretch);
}
return _isEnablePickUpAnimationComplete;
}
/// <summary>
/// 步骤:移动到容器位置
/// </summary>
/// <returns></returns>
public bool EnableArriveContainerPosition(float offest)
{
if (_isEnableArriveContainerPositionComplete) return true;
if (!_isPlayingAnim)
{
_isPlayingAnim = true;
CalculateSpeedSecond(Vector3.Distance(transform.position,_currentContainerInfo.mapContainer.transform.position));
Debug.Log($"移动时间{_moveSeconds}");
Tween.PositionX(transform, _currentContainerInfo.mapContainer.transform.position.x, _moveSeconds,Ease.Linear).OnComplete(()=>
{
Debug.Log("到达货物放置位置");
_isEnableArriveContainerPositionComplete = true;
ResetRuntimeParam();
});
Tween.PositionY(_caroparent, _currentContainerInfo.mapContainer.transform.position.y + offest, _moveSeconds, Ease.Linear);
}
return _isEnableArriveContainerPositionComplete;
}
/// <summary>
/// 步骤:启动放货动画
/// </summary>
/// <param name="actionType"></param>
/// <returns></returns>
public bool EnableLoadPutDownAnimation()
{
if (_isEnablePutDownAnimationComplete) return true;
if (!_isPlayingAnim)
{
_isPlayingAnim = true;
_shelfRowAnimData.stretch.events = GetAnimationEvent("PlayStretchComplete",ToolActionType.PutDown);
_animancer.Play(_shelfRowAnimData.stretch);
}
return _isEnablePutDownAnimationComplete;
}
#endregion
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a0e58b47bf55898428028fa90be72aa2

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0084f04044682644a82e08aa38fd3db2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,63 @@
using System;
using UnityEngine;
namespace GameLogic
{
public class AnimationEventComponent : MonoBehaviour
{
public void PlayStretchComplete(int data)
{
if (Enum.IsDefined(typeof(ToolActionType), data))
{
ToolActionType action = (ToolActionType)data;
Debug.Log($"Received ToolActionType: {action}");
switch (action)
{
case ToolActionType.PickUp:
GameEvent.Send(EventSetting.PlayStretchPickUpComplete);
break;
case ToolActionType.PutDown:
GameEvent.Send(EventSetting.PlayStretchPutDownComplete);
break;
default:
Debug.LogWarning($"Unhandled ToolActionType: {action}");
break;
}
}
else
{
Debug.LogWarning($"Invalid ToolActionType value: {data}");
}
}
public void PlayShrinkComplete(int data)
{
if (Enum.IsDefined(typeof(ToolActionType), data))
{
ToolActionType action = (ToolActionType)data;
Debug.Log($"Received ToolActionType: {action}");
switch (action)
{
case ToolActionType.PickUp:
GameEvent.Send(EventSetting.PlayShrinkPickUpComplete);
break;
case ToolActionType.PutDown:
GameEvent.Send(EventSetting.PlayShrinkPutDownComplete);
break;
default:
Debug.LogWarning($"Unhandled ToolActionType: {action}");
break;
}
}
else
{
Debug.LogWarning($"Invalid ToolActionType value: {data}");
}
Debug.Log("Ëõ¶¯»­Íê³É");
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6e8ba6bad3c56e84d878078b440529f3

View File

@ -0,0 +1,55 @@
using System;
using EasyInject.Attributes;
using GameLogic;
using Newtonsoft.Json;
using NUnit.Framework;
using Sirenix.OdinInspector;
using UnityEngine;
[GameObjectBean(ENameType.GameObjectName)]
public class ShelfNetListenerComponent : MonoBehaviour,IWcsSocketDataHandle
{
public Transform Transform { get; }
public DeviceData DeviceData { get; }
public T DynamicData<T>()
{
throw new System.NotImplementedException();
}
[ShowInInspector]public string DeviceCode => _deviceCode;
[ShowInInspector]public string DeviceType => _deviceType;
private string _deviceCode ;
private string _deviceType;
public event IDevice.DataChangeEvent DataChange;
public event IDevice.DataChangeEvent ErrorMessage;
[ShowInInspector]public ShelfActor _shelfActor;
private void Start()
{
_shelfActor = GetComponent<ShelfActor>();
_deviceCode = _shelfActor._shelfConfig.deviceCode;
_deviceType = _shelfActor._shelfConfig.deviceType;
}
public void DataHandle(object data, object other = null)
{
Debug.Log("DataHandle");
// if (string.IsNullOrEmpty(_deviceCode) || _deviceCode.Length <=0) return;
// //if (! (data is StackerData stackerData)) return;
// //½ÓÊÕÊý¾Ý
// var stackerData = JsonConvert.DeserializeObject<StackerData>(JsonConvert.SerializeObject(data));
// //frontHasGoodsDesc = stackerData.frontForkHasGoods == true ? "ǰ²æÓлõ" : "ÎÞ»õ";
// var deviceData = JsonConvert.DeserializeObject<DeviceData>(JsonConvert.SerializeObject(other));
// Debug.Log(StackerDeviceDataUtility.GetPositionInfo(stackerData));
// if (stackerData.frontForkHasGoods);
// {
//
// }
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 20e0d00e57698f84887368e168629083

View File

@ -0,0 +1,15 @@
using Sirenix.OdinInspector;
namespace GameLogic.Game.Data
{
public class AgvTaskFeedBack
{
[LabelText("系统代码")] public string systemCode = "DT";
[LabelText("库代码")] public string houseCode = "DT";
[LabelText("任号")] public long taskCode;
[LabelText("小车id")] public string carId;
[LabelText("任务类型")] public string taskType;
[LabelText("反馈状态码")] public string feedbackStatus;
[LabelText("反馈站台号")] public string feedbackLocation;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f62522936e12422ba7566c095ac1cdf0
timeCreated: 1746689862

View File

@ -2,7 +2,7 @@ using System;
using static AgvCarManage;
[System.Serializable]
public class AgvTaskData
public class AgvTaskInfo
{
public long instructionId;
@ -31,7 +31,7 @@ public class AgvTaskData
public override bool Equals(object obj)
{
return obj is AgvTaskData data &&
return obj is AgvTaskInfo data &&
instructionId == data.instructionId &&
instructionCode == data.instructionCode;
}

View File

@ -1,20 +1,18 @@

using Sirenix.OdinInspector;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Serialization;
[System.Serializable]
public class ContainerInfo
namespace GameLogic
{
[LabelText("货物")]public GameObject container;
[System.Serializable]
public class ContainerInfo
{
[LabelText("货物")] public GameObject mapContainer;
[LabelText("货物")] public GameObject container;
[LabelText("货架")] public ShelfActor shelf;
[LabelText("货架排")]public int shelfRow;
[LabelText("货架列")]public int shelColumn;
[LabelText("货架层")]public int shelfLayer;
[LabelText("货架排")] public int shelfRow;
[LabelText("货架列")] public int shelColumn;
[LabelText("货架层")] public int shelfLayer;
}
}

View File

@ -0,0 +1,19 @@
using Sirenix.OdinInspector;
using UnityEngine;
namespace GameLogic
{
[System.Serializable]
public class ShelfRowAnimData
{
/// <summary>
/// 伸动画
/// </summary>
[LabelText("伸动画")] public AnimationClip stretch;
/// <summary>
/// 缩动画
/// </summary>
[LabelText("缩动画")] public AnimationClip shrink ;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e17fdddd9422427ba7bdbb7c49c96fb1
timeCreated: 1746680862

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: db135584c06f406d8e113c3363ca229f
timeCreated: 1746668246

View File

@ -0,0 +1,39 @@
using PrimeTween;
using UnityEngine;
namespace GameLogic
{
public static class GameObjectExtension
{
public static void SetPosition(this GameObject self, Vector3 position)
{
self.transform.position = position;
}
public static void SetPosition(this GameObject self, Transform transform)
{
self.transform.position = transform.position;
}
public static void SetTransformNoScale(this GameObject self, Transform transform)
{
self.transform.position = transform.position;
self.transform.rotation = transform.rotation;
}
public static void SetTransform(this GameObject self, Transform transform)
{
self.transform.position = transform.position;
self.transform.rotation = transform.rotation;
self.transform.localScale = transform.localScale;
}
public static void SetParent(this GameObject self, Transform parent)
{
self.transform.SetParent(parent);
}
public static void SetParentLocalPositionZero(this GameObject self, Transform parent)
{
self.transform.SetParent(parent);
Tween.LocalPosition(self.transform, Vector3.zero, 0.5f);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b598db33ceb24c38aaba8bf6c2d8b5fe
timeCreated: 1746668261

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 05c9f423a585a4d48a7f7348eebb38d0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,146 @@
using System;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 游戏事件系统 - 静态类
/// 提供添加监听、发送事件和移除监听的功能
/// </summary>
public static class GameEvent
{
// 使用字典存储事件名称和对应的监听器列表
private static Dictionary<string, List<Action<object>>> eventDictionary = new Dictionary<string, List<Action<object>>>();
/// <summary>
/// 添加事件监听
/// </summary>
/// <param name="eventName">事件名称</param>
/// <param name="listener">事件监听器</param>
public static void AddListener(string eventName, Action<object> listener)
{
// 检查事件名称是否为空
if (string.IsNullOrEmpty(eventName))
{
Debug.LogError("GameEvent: 事件名称不能为空!");
return;
}
// 检查监听器是否为空
if (listener == null)
{
Debug.LogError("GameEvent: 监听器不能为空!");
return;
}
// 如果事件不存在,创建新的监听器列表
if (!eventDictionary.ContainsKey(eventName))
{
eventDictionary[eventName] = new List<Action<object>>();
}
// 添加监听器到列表中
eventDictionary[eventName].Add(listener);
}
/// <summary>
/// 发送事件
/// </summary>
/// <param name="eventName">事件名称</param>
/// <param name="param">事件参数</param>
public static void Send(string eventName, object param = null)
{
// 检查事件名称是否为空
if (string.IsNullOrEmpty(eventName))
{
Debug.LogError("GameEvent: 事件名称不能为空!");
return;
}
// 如果事件不存在,直接返回
if (!eventDictionary.ContainsKey(eventName))
{
return;
}
// 获取监听器列表
List<Action<object>> listeners = eventDictionary[eventName];
// 调用所有监听器
for (int i = 0; i < listeners.Count; i++)
{
try
{
listeners[i].Invoke(param);
}
catch (Exception e)
{
Debug.LogError($"GameEvent: 执行事件 '{eventName}' 的监听器时发生异常: {e.Message}");
}
}
}
/// <summary>
/// 移除事件监听
/// </summary>
/// <param name="eventName">事件名称</param>
/// <param name="listener">事件监听器</param>
public static void RemoveListener(string eventName, Action<object> listener)
{
// 检查事件名称是否为空
if (string.IsNullOrEmpty(eventName))
{
Debug.LogError("GameEvent: 事件名称不能为空!");
return;
}
// 检查监听器是否为空
if (listener == null)
{
Debug.LogError("GameEvent: 监听器不能为空!");
return;
}
// 如果事件不存在,直接返回
if (!eventDictionary.ContainsKey(eventName))
{
return;
}
// 从列表中移除监听器
eventDictionary[eventName].Remove(listener);
// 如果监听器列表为空,移除事件
if (eventDictionary[eventName].Count == 0)
{
eventDictionary.Remove(eventName);
}
}
/// <summary>
/// 清除所有事件监听
/// </summary>
public static void ClearAllEvents()
{
eventDictionary.Clear();
}
/// <summary>
/// 清除指定事件的所有监听
/// </summary>
/// <param name="eventName">事件名称</param>
public static void ClearEvent(string eventName)
{
// 检查事件名称是否为空
if (string.IsNullOrEmpty(eventName))
{
Debug.LogError("GameEvent: 事件名称不能为空!");
return;
}
// 如果事件存在,移除整个事件
if (eventDictionary.ContainsKey(eventName))
{
eventDictionary.Remove(eventName);
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6c9829ebe0411e346b713453e904b1c0

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 436600838c80455bad0101cdb79344ba
timeCreated: 1746664720

View File

@ -0,0 +1,9 @@
namespace GameLogic
{
public static class AssetLocationSetting
{
public static readonly string ContainerPath = "YCLZT";
public static readonly string SoSelfConfig = "So/Shelf/shelfConfig_";
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6a48acd0bb5e4b7bafc551658911f6cc
timeCreated: 1746667972

View File

@ -0,0 +1,12 @@
namespace GameLogic
{
public static class EventSetting
{
public static readonly string PlayStretchPickUpComplete = "PlayStretchPickUpComplete";
public static readonly string PlayStretchPutDownComplete = "PlayStretchPutDownComplete";
public static readonly string PlayShrinkPickUpComplete = "PlayShrinkPickUpComplete";
public static readonly string PlayShrinkPutDownComplete = "PlayShrinkPutDownComplete";
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: c5c04078ec0a4988ae596c3ae0c564ac
timeCreated: 1746686567

View File

@ -0,0 +1,7 @@
namespace GameLogic
{
public static class TagSetting
{
public static readonly string ShelfStation = "ShelfStation";
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 71a6c10d17b44e109791ed532986b5d0
timeCreated: 1746664730

View File

@ -0,0 +1,27 @@
using UnityEngine;
namespace GameLogic
{
public static class DataUtility
{
public static int GetRow(string data)
{
var array = data.Split('-');
return int.Parse(array[0]);
}
public static int GetColumn(string data)
{
var array = data.Split('-');
return int.Parse(array[1]);
}
public static int GetLayer(string data)
{
var array = data.Split('-');
return int.Parse(array[2]);
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4afb7fbb72f215d4aae9cca6e4e9badc

View File

@ -1,17 +1,20 @@

using System;
using System;
using UnityEngine;
public static class ContainerFactory
namespace GameLogic
{
public static ContainerInfo CreateInfo(GameObject container,ShelfActor shelf,int shelfRow,int shelColumn,int shelfLayer)
public static class ContainerFactory
{
public static ContainerInfo CreateInfo(GameObject mapContainer, ShelfActor shelf, int shelfRow, int shelColumn,
int shelfLayer)
{
var containerInfo = Activator.CreateInstance<ContainerInfo>();
containerInfo.container = container;
containerInfo.mapContainer = mapContainer;
containerInfo.shelf = shelf;
containerInfo.shelfRow = shelfRow;
containerInfo.shelColumn = shelColumn;
containerInfo.shelfLayer = shelfLayer;
return containerInfo;
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 38a9b33e115c0124bafea9389ff3ed38
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,29 @@
using System.Collections.Generic;
using Sirenix.OdinInspector;
using UnityEngine;
namespace GameLogic
{
[CreateAssetMenu(fileName = "shelfConfig_", menuName = "数字孪生/ShelfConfig")]
public class So_ShelfConfig : SerializedScriptableObject
{
[LabelText(""), ShowInInspector] public string deviceCode;
[LabelText(""), ShowInInspector] public string deviceType = "STACKER";
[LabelText("货物所属工具组"),ShowInInspector] public List<int> groups = new List<int>();
[LabelText("伸缩动画"),ShowInInspector]public Dictionary<int,ShelfRowAnimData> shelfAnimDatas = new Dictionary<int, ShelfRowAnimData>();
public ShelfRowAnimData GetAnimaData(int row)
{
return shelfAnimDatas.GetValueOrDefault(row);
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 2dd819b1a17000747b98d533a289c5eb

View File

@ -0,0 +1,20 @@
using UnityEngine;
namespace GameLogic
{
public static class StackerDeviceDataUtility
{
/// <summary>
/// 获取货物或者站点位置信息
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string GetPositionInfo(StackerData data)
{
return $"{data.toRow}-{data.frontColumn}-{data.toLayer}";
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 867844248f7945388f0f41f9c0543888
timeCreated: 1746773217

View File

@ -1,5 +1,6 @@
using EasyInject.Attributes;
using System.Collections.Generic;
using GameLogic.Origin.data;
using UnityEngine;
/// <summary>
@ -15,6 +16,7 @@ public class InitNetWorkProcess : IProcessState
[Autowired("WmsStorageWebsocket")]
private WmsStorageWebsocket wmsStorageWebsocket;
private bool executing = false;
[Autowired] AgvTaskListData _agvTaskListData;
public string Name { get => "InitNetWorkProcess"; }
public int Priority { get => 0; }
public bool IsExecuteProcess { get => executing; set => executing = value; }
@ -36,7 +38,8 @@ public class InitNetWorkProcess : IProcessState
////监听后台数据变化
wmsStorageWebsocket.OnMessage(v.DataHandle);
});
//³õʼ»¯agvÈÎÎñÁбí
_agvTaskListData.Init();
netWorkComponent?.ConnectAllWebSocket();
}
@ -45,7 +48,6 @@ public class InitNetWorkProcess : IProcessState
{
Debug.Log("网络服务启动完成");
IsExecuteProcess = false;
}
public void OnUpdate()

View File

@ -0,0 +1,52 @@
using System;
using System.Collections.Generic;
using BestHTTP;
using Cysharp.Threading.Tasks;
using EasyInject.Attributes;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace GameLogic.Origin.data
{
[Component]
public class AgvTaskListData
{
[Autowired] private NetWorkComponent _netWork;
public static List<AgvTaskInfo> AgvTaskList = new ();
public void Init()
{
UniTask.RunOnThreadPool(delegate
{
_netWork.RemoteGetAgvTaskListData((HTTPRequest originalRequest, HTTPResponse response) =>
{
try
{
if (response == null)
{
return;
}
if (response.IsSuccess)
{
JObject resultData = JObject.Parse(response.DataAsText);
string json = resultData["object"].ToString();
if (!string.IsNullOrEmpty(json))
{
List<AgvTaskInfo> agvTasks = JsonConvert.DeserializeObject<List<AgvTaskInfo>>(json);
AgvTaskList = agvTasks;
originalRequest.Send();
}
}
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
});
}, false);
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: b812a33eac9f44fb8cac8af30eb30bc2
timeCreated: 1746692851

View File

@ -4,20 +4,49 @@ using System;
[System.Serializable]
public class StackerData
{
/// <summary>
/// 货物条码号
/// </summary>
public string frontContainerCode;
// /// <summary>
// /// 货物条码号
// /// </summary>
public string frontInstructionCode;
//public string frontFrom;
//public bool? frontStatus;
/// <summary>
/// 货物状态描述
/// </summary>
public string frontStatusDescription;
//public string backContainerCode;
//public string backInstructionCode;
//public string backTo;
//public string backStatusDescription;
public int roadway;
/// <summary>
/// 货物的排
/// </summary>
public int frontRow;
public int frontColumn;
/// <summary>
/// 货物的层
/// </summary>
public int frontLayer;
/// <summary>
/// 货物的列
/// </summary>
public int special1;
/// <summary>
/// 动作信号
/// </summary>
public StackerForkActionEnum frontForkAction;
public string frontForkActionDescription;
public StackerForkCargoEnum frontForkCargo;
@ -28,6 +57,10 @@ public class StackerData
//public string backForkActionDescription;
//public string taskType;
//public string taskTypeDescription;
/// <summary>
/// 有货信号
/// </summary>
public Boolean frontForkHasGoods;
//public bool? backForkHasGoods;
public string strategyCode;
@ -35,8 +68,21 @@ public class StackerData
//public string stageTrackLength;
//public string realTrackLength;
//public string moveDirection;
/// <summary>
/// 存放容器地址排
/// </summary>
public int toRow;
/// <summary>
/// 货物存放容器地址列
/// </summary>
public int toColumn;
/// <summary>
/// 货物存放容器地址层
/// </summary>
public int toLayer;
public int toCommand;
public string toCommandDescription;

View File

@ -13,5 +13,6 @@ public class DeviceStatus
public double animationSpeed;
public PlayState playState;
public int modelId;
public string type;
}

View File

@ -19,8 +19,8 @@ public interface ICar : IDevice
/// <summary>
/// 下发任务给小车
/// </summary>
/// <param name="taskData"></param>
void SendTask(AgvTaskData taskData);
/// <param name="taskInfo"></param>
void SendTask(AgvTaskInfo taskInfo);
/// <summary>
/// 可用巷道
/// </summary>

View File

@ -19,7 +19,7 @@ public class AgvCarManage : MonoBehaviour,IApplcationShutdown
/// agv任务列表
/// </summary>
[SerializeField]
private List<AgvTaskData> tasks;
private List<AgvTaskInfo> tasks;
[Autowired]
NetWorkComponent netWorkComponent;
@ -95,7 +95,7 @@ public class AgvCarManage : MonoBehaviour,IApplcationShutdown
//});
//分配小车去消费任务
foreach (AgvTaskData data in tasks)
foreach (AgvTaskInfo data in tasks)
{
ICar car = source.Find(v => (v.AllowRows.Contains(data.fromDevice)) && !v.hasTask && v.Initialize);
if (car != null)
@ -115,9 +115,7 @@ public class AgvCarManage : MonoBehaviour,IApplcationShutdown
{
while (true)
{
yield return new WaitForSecondsRealtime(1f);
netWorkComponent.RemoteGetAgvTaskListData(OnTaskList);
}
}
@ -141,7 +139,7 @@ public class AgvCarManage : MonoBehaviour,IApplcationShutdown
string json = resultData["object"].ToString();
if (!string.IsNullOrEmpty(json))
{
List<AgvTaskData> agvTasks = JsonConvert.DeserializeObject<List<AgvTaskData>>(json);
List<AgvTaskInfo> agvTasks = JsonConvert.DeserializeObject<List<AgvTaskInfo>>(json);
agvTasks.Sort((a, b) =>
{
if (a.fromLocation.Contains("-") && b.fromLocation.Contains("-"))
@ -175,7 +173,7 @@ public class AgvCarManage : MonoBehaviour,IApplcationShutdown
/// </summary>
/// <param name="task"></param>
/// <returns></returns>
public bool Contains(AgvTaskData task)
public bool Contains(AgvTaskInfo task)
{
return tasks.Find(v => task.instructionCode == v.instructionCode && task.instructionId == v.instructionId) != null;
}
@ -184,7 +182,7 @@ public class AgvCarManage : MonoBehaviour,IApplcationShutdown
/// </summary>
/// <param name="instructionCode"></param>
/// <returns></returns>
public AgvTaskData GetTaskByCode(long instructionCode)
public AgvTaskInfo GetTaskByCode(long instructionCode)
{
return tasks.Find(v => instructionCode == v.instructionCode);
}

View File

@ -9,8 +9,8 @@ using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.Playables;
using static UnityEditor.FilePathAttribute;
using UnityEngine.UIElements;
using UnityEngine.Serialization;
/// <summary>
/// 叉车AGV
/// </summary>
@ -86,8 +86,8 @@ public class ForkAgvDevice : AbstractDevice, ICar
/// <summary>
/// 当前agv任务
/// </summary>
[SerializeField]
private AgvTaskData taskData;
[FormerlySerializedAs("taskList")] [FormerlySerializedAs("taskData")] [SerializeField]
private AgvTaskInfo taskInfo;
/// <summary>
/// 当前反馈状态
@ -168,7 +168,7 @@ public class ForkAgvDevice : AbstractDevice, ICar
}
UpdateTask();
//当任务状态是下发状态是,执行
if (taskData.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.SENT)
if (taskInfo.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.SENT)
{
if (currentFeedBackStatus != AgvCarManage.CarTaskStatusEnum.TAKING)
{
@ -178,15 +178,15 @@ public class ForkAgvDevice : AbstractDevice, ICar
FeedBackTaskStatus(currentFeedBackStatus);
}
//取货中
if (taskData.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.TAKING)
if (taskInfo.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.TAKING)
{
agent.isStopped = false;
//开始代理
StartAgent(taskData.fromLocation);
StartAgent(taskInfo.fromLocation);
// 起点旋转位置
if (applyTakePosition.Count > 0)
{
Vector3 applyTakeVector = LastPosition(applyTakePosition,taskData.fromLocation);
Vector3 applyTakeVector = LastPosition(applyTakePosition,taskInfo.fromLocation);
//抵达后,申请取货流程
Vector3 targetPosition = new Vector3(applyTakeVector.x, transform.position.y, applyTakeVector.z);
if (Vector3.Distance(transform.position, targetPosition) <= 0.1f)
@ -199,19 +199,22 @@ public class ForkAgvDevice : AbstractDevice, ICar
}
}
//申请取货
if (taskData.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.APPLY_TAKE)
if (taskInfo.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.APPLY_TAKE)
{
//抵达终点
if (Vector3.Distance(transform.position, agent.destination) <= 0.1f)
Vector3 targetPosition = new Vector3(transform.position.x, agent.destination.y, transform.position.z);
if (Vector3.Distance(targetPosition, agent.destination) <= 0.1f)
{
//获取库位容器模型,绑定到货叉上
GameObject game = deviceParseService.GameObjectByDevice(taskData.fromLocation);
GameObject game = deviceParseService.GameObjectByDevice(taskInfo.fromLocation);
if (game != null)
{
Container container = game.GetComponentInChildren<Container>();
if (container != null)
{
container.transform.parent = forkCargo.transform;
container.Agent.enabled = false;
container.Agent.isStopped = true;
playable.Play();
}
}
@ -219,11 +222,11 @@ public class ForkAgvDevice : AbstractDevice, ICar
currentFeedBackStatus = AgvCarManage.CarTaskStatusEnum.TAKE_FINISHED;
FeedBackTaskStatus(currentFeedBackStatus);
}
Quaternion targetRotation = RotationByDevice(taskData.fromDevice);
Quaternion targetRotation = RotationByDevice(taskInfo.fromDevice);
if (transform.localRotation == targetRotation)
{
//校验起点是设备,需要提升货叉到高位
if (!IsShelf(taskData.fromLocation))
if (!IsShelf(taskInfo.fromLocation))
{
if(playable.time <= 1.3)
{
@ -247,12 +250,12 @@ public class ForkAgvDevice : AbstractDevice, ICar
//取货完成
if (taskData.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.TAKE_FINISHED)
if (taskInfo.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.TAKE_FINISHED)
{
if (HasGood)
{
//是库位取货方式
if (IsShelf(taskData.fromDevice))
if (IsShelf(taskInfo.fromDevice))
{
if (playable.time >= 0.4)
{
@ -269,7 +272,7 @@ public class ForkAgvDevice : AbstractDevice, ICar
{
//接驳点取货方式
//需要回退到指定位置做货叉下降动作
Vector3 target = LastPosition(applyTakePosition, taskData.fromDevice);
Vector3 target = LastPosition(applyTakePosition, taskInfo.fromDevice);
agent.isStopped = false;
//开始代理
StartAgent(target);
@ -277,7 +280,7 @@ public class ForkAgvDevice : AbstractDevice, ICar
//到位后,开始下降货叉
if (Vector3.Distance(transform.position, targetPosition) <= 0.1f)
{
if (playable.time >= 0.4)
if (playable.time >= 0.6)
{
playable.playableGraph.GetRootPlayable(0).SetSpeed(-1);
playable.Play();
@ -304,14 +307,14 @@ public class ForkAgvDevice : AbstractDevice, ICar
}
else
{
GameObject game = deviceParseService.GameObjectByDevice(taskData.fromLocation);
GameObject game = deviceParseService.GameObjectByDevice(taskInfo.fromLocation);
if (game != null)
{
Container container = game.GetComponentInChildren<Container>();
if (container != null)
{
container.Agent.enabled = false;
container.isAwke = false;
container.transform.parent = forkCargo.transform;
playable.Play();
}
@ -320,15 +323,15 @@ public class ForkAgvDevice : AbstractDevice, ICar
return;
}
//放货中
if (taskData.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.PUTTING)
if (taskInfo.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.PUTTING)
{
//未代理开始代理
StartAgent(taskData.toLocation);
StartAgent(taskInfo.toLocation);
// 起点旋转位置
if (applyPutPosition.Count > 0)
{
Vector3 applyPutVector = LastPosition(applyPutPosition, taskData.toLocation);
Vector3 applyPutVector = LastPosition(applyPutPosition, taskInfo.toLocation);
//抵达后,申请取货流程
Vector3 targetPosition = new Vector3(applyPutVector.x, transform.position.y, applyPutVector.z);
if (Vector3.Distance(transform.position, targetPosition) <= 0.1f)
@ -343,7 +346,7 @@ public class ForkAgvDevice : AbstractDevice, ICar
}
//申请放货
if (taskData.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.APPLY_PUT && currentFeedBackStatus == AgvCarManage.CarTaskStatusEnum.APPLY_PUT)
if (taskInfo.agvTaskStatus == AgvCarManage.CarTaskStatusEnum.APPLY_PUT && currentFeedBackStatus == AgvCarManage.CarTaskStatusEnum.APPLY_PUT)
{
//抵达终点
if (Vector3.Distance(transform.position, agent.destination) <= 0.1f)
@ -351,13 +354,13 @@ public class ForkAgvDevice : AbstractDevice, ICar
currentFeedBackStatus = AgvCarManage.CarTaskStatusEnum.PUT_FINISHED;
}
Quaternion targetRotation = RotationByDevice(taskData.toDevice);
Quaternion targetRotation = RotationByDevice(taskInfo.toDevice);
if (transform.localRotation == targetRotation)
{
//启用代理
agent.isStopped = false;
//如果是设备将货叉提升完
if(!IsShelf(taskData.toLocation))
if(!IsShelf(taskInfo.toLocation))
{
playable.Play();
}
@ -374,7 +377,7 @@ public class ForkAgvDevice : AbstractDevice, ICar
{
//校验是库位还是设备
if(IsShelf(taskData.toLocation))
if(IsShelf(taskInfo.toLocation))
{
Debug.LogWarning("放货持续");
if (playable.time > 0)
@ -408,10 +411,10 @@ public class ForkAgvDevice : AbstractDevice, ICar
}
else
{
if(!IsShelf(taskData.toLocation))
if(!IsShelf(taskInfo.toLocation))
{
//当后退完成后最终下降完货叉并重置agv状态
Vector3 position = LastPosition(applyPutPosition, taskData.toLocation);
Vector3 position = LastPosition(applyPutPosition, taskInfo.toLocation);
Vector3 targetPosition = new Vector3(position.x, transform.position.y, position.z);
if (Vector3.Distance(transform.position, targetPosition) <= 0.1f)
@ -430,12 +433,12 @@ public class ForkAgvDevice : AbstractDevice, ICar
}
else
{
Vector3 position = LastPosition(applyPutPosition, taskData.toLocation);
Vector3 position = LastPosition(applyPutPosition, taskInfo.toLocation);
Vector3 targetPosition = new Vector3(position.x, transform.position.y, position.z);
if (Vector3.Distance(transform.position, targetPosition) <= 0.1f)
{
GameObject game = deviceParseService.GameObjectByDevice(taskData.toLocation);
Container container = containersManage.GetContainerByCode(taskData.containerCode);
GameObject game = deviceParseService.GameObjectByDevice(taskInfo.toLocation);
Container container = containersManage.GetContainerByCode(taskInfo.containerCode);
container.transform.parent = game.transform;
container.transform.localPosition = new Vector3(0, -0.2472343f, 0.0006999969f);
container.Agent.enabled = true;
@ -451,7 +454,7 @@ public class ForkAgvDevice : AbstractDevice, ICar
/// </summary>
public void Rest()
{
taskData = new AgvTaskData();
taskInfo = new AgvTaskInfo();
_hasTask = false;
paths.Clear();
currentFeedBackStatus =AgvCarManage.CarTaskStatusEnum.STANDBY;
@ -470,13 +473,13 @@ public class ForkAgvDevice : AbstractDevice, ICar
{
if(debugFeedBack)
{
taskData.agvTaskStatus = status;
taskInfo.agvTaskStatus = status;
}
FeedBackEntity feedBackDTO = new FeedBackEntity();
feedBackDTO.feedbackStatus = status.ToString();
feedBackDTO.feedbackLocation = feedBacklocation;
feedBackDTO.taskCode = taskData.instructionCode;
feedBackDTO.carId = taskData.carId;
feedBackDTO.taskCode = taskInfo.instructionCode;
feedBackDTO.carId = taskInfo.carId;
netWorkComponent.RemoteFeedBackAgvTaskStatus(feedBackDTO, OnFeedBack);
}
/// <summary>
@ -519,17 +522,17 @@ public class ForkAgvDevice : AbstractDevice, ICar
}
private void Reset()
{
taskData = null;
taskInfo = null;
_hasTask = false;
agent.ResetPath();
}
public void SendTask(AgvTaskData taskData)
public void SendTask(AgvTaskInfo taskInfo)
{
//if (!Initialize)
//{
// return;
//}
this.taskData = taskData;
this.taskInfo = taskInfo;
_hasTask = true;
}
/// <summary>
@ -588,7 +591,10 @@ public class ForkAgvDevice : AbstractDevice, ICar
//容器
if (statusEntity.containerStatus != null)
{
Container container = ApplicationBoot.Instance.GetBean<Container>(statusEntity.containerStatus.deviceCode);
ContainerEntity containerEntity = new ContainerEntity();
containerEntity.containerCode = statusEntity.containerStatus.deviceCode;
containerEntity.containerType = statusEntity.containerStatus.type;
Container container = containersManage.CreateContainer(forkCargo.transform,containerEntity);
container.transform.localPosition = statusEntity.containerStatus.posistion.ToVector();
container.transform.localRotation = statusEntity.containerStatus.roation.ToQuaternion();
container.transform.localScale = statusEntity.containerStatus.scale.ToVector();
@ -649,9 +655,9 @@ public class ForkAgvDevice : AbstractDevice, ICar
carStatus.containerStatus = containerStatus;
}
carStatus.cargoStatus = cargo;
if(taskData != null && taskData.instructionId != 0)
if(taskInfo != null && taskInfo.instructionId != 0)
{
carStatus.task = taskData;
carStatus.task = taskInfo;
}
//保存当前设备数据
@ -687,7 +693,7 @@ public class ForkAgvDevice : AbstractDevice, ICar
agent.SetDestination(targetPosistion);
lineRenderer.positionCount = 0;
lineRenderer.SetPositions(agent.path.corners);
paths.Add(taskData.fromLocation);
paths.Add(taskInfo.fromLocation);
}
}
/// <summary>
@ -723,9 +729,9 @@ public class ForkAgvDevice : AbstractDevice, ICar
{
_data.feedBack = currentFeedBackStatus.ToString();
if(taskData != null)
if(taskInfo != null)
{
AgvTaskData task = carManage.GetTaskByCode(taskData.instructionCode);
AgvTaskInfo task = carManage.GetTaskByCode(taskInfo.instructionCode);
try
{
animationSpeed = playable.playableGraph.GetRootPlayable(0).GetSpeed();
@ -743,11 +749,11 @@ public class ForkAgvDevice : AbstractDevice, ICar
agentTarget = agent.destination;
if (task != null)
{
taskData = task;
_data.container = taskData.containerCode;
_data.startDevice = taskData.fromLocation;
_data.endDevice = taskData.toLocation;
_data.currentAction = taskData.agvTaskStatus.ToString();
taskInfo = task;
_data.container = taskInfo.containerCode;
_data.startDevice = taskInfo.fromLocation;
_data.endDevice = taskInfo.toLocation;
_data.currentAction = taskInfo.agvTaskStatus.ToString();
}
else
{
@ -781,7 +787,7 @@ public class ForkAgvDevice : AbstractDevice, ICar
[System.Serializable]
private class CarStatusEntity : DeviceStatus
{
public AgvTaskData task;
public AgvTaskInfo task;
public AgvCarManage.CarTaskStatusEnum currentFeedBackStatus;
public Boolean agentIsStoping;
public Boolean agentRotationUpdate;
@ -866,7 +872,7 @@ public class ForkAgvDevice : AbstractDevice, ICar
container.Agent.enabled = true;
//agv得退出一段距离
//倒退位置坐标
Vector3 applyPutVector = LastPosition(applyPutPosition, taskData.toLocation);
Vector3 applyPutVector = LastPosition(applyPutPosition, taskInfo.toLocation);
//开始代理
StartAgent(applyPutVector);

View File

@ -67,8 +67,8 @@ public class Container : MonoBehaviour, IMouseClick, IFollowHelp
/// <returns></returns>
public bool CheckAgentPosition(Vector3 target)
{
Debug.LogWarning(string.Format("容器= 【{0}】 距离【{1}】 ", name, Vector3.Distance(Agent.destination, new Vector3(target.x, Agent.destination.y, target.z))));
return Vector3.Distance(Agent.destination, new Vector3(target.x, Agent.destination.y, target.z)) <= 0.12f;
// Debug.LogWarning(string.Format("容器= 【{0}】 距离【{1}】 ", name, Vector3.Distance(transform.position, new Vector3(target.x, transform.position.y, target.z))));
return Vector3.Distance(transform.position, new Vector3(target.x, transform.position.y, target.z)) < 0.01f;
}
public void ToTarget(Vector3 target)
{

View File

@ -55,22 +55,22 @@ public class ContainersManage : MonoBehaviour, IApplcationShutdown
}
if (_hideContainers.Count > 0)
{
lock (_hideContainers)
{
Container containerObject = _hideContainers.Find(v => string.Equals(v.ContainerData.containerType, entity.containerType));
if (containerObject != null)
{
ApplicationBoot.Instance.AddBean(containerObject, entity.containerCode);
containerObject.name = entity.containerCode;
containerObject.ContainerData = entity;
return containerObject;
}
}
}
else
{
// if (_hideContainers.Count > 0)
// {
// lock (_hideContainers)
// {
// Container containerObject = _hideContainers.Find(v => string.Equals(v.ContainerData.containerType, entity.containerType));
// if (containerObject != null)
// {
// ApplicationBoot.Instance.AddBean(containerObject, entity.containerCode);
// containerObject.name = entity.containerCode;
// containerObject.ContainerData = entity;
// return containerObject;
// }
// }
// }
// else
// {
GameObject obj = _source.Find(v => string.Equals(entity.containerType, v.name));
if (obj != null)
{
@ -99,8 +99,9 @@ public class ContainersManage : MonoBehaviour, IApplcationShutdown
return container;
}
}
throw new System.Exception(string.Format("生成容器类型:【{code}】失败"));
// }
Debug.Log(string.Format("生成容器类型:【{code}】失败"));
throw new Exception(string.Format("生成容器类型:【{code}】失败"));
}
public Container CreateContainer(Vector3 localPosition,Transform parent, ContainerEntity entity,LayerMask layerMask)
{

View File

@ -1,5 +1,4 @@
using EasyInject.Attributes;
using System.ComponentModel;
using UnityEngine;
@ -38,6 +37,7 @@ public class ConveyorDevice : AbstractConveyorDevice
{
//Debug.LogWarning(string.Format("输送线【{0}】停盘位置 【{1}】",this.name, ContainerParkingPosition));
container.ToTarget(ContainerParkingPosition);
}
}
}
@ -50,8 +50,6 @@ public class ConveyorDevice : AbstractConveyorDevice
if (container == null)
{
//到这一步也就是说这个条码托盘未被加载到场景,这种情况属于初始化才会出现
ContainerEntity entity = new();
entity.containerCode = conveyorData.containerCode;
@ -61,13 +59,21 @@ public class ConveyorDevice : AbstractConveyorDevice
}
else
{
//如果托盘的终点不是当前位置,更改容器目标点坐标
if (!container.CheckAgentPosition(ContainerParkingPosition))
{
//Debug.LogWarning(string.Format("输送线【{0}】停盘位置 【{1}】", this.name, ContainerParkingPosition));
container.ToTarget(ContainerParkingPosition);
}
else
{
if (isAgvInteraction)
{
container.transform.parent = transform;
//container.Agent.enabled = false;
}
}
}
}
@ -81,7 +87,7 @@ public class ConveyorDevice : AbstractConveyorDevice
//到这一步也就是说这个条码托盘未被加载到场景,这种情况属于初始化才会出现
ContainerEntity entity = new();
entity.containerCode = conveyorData.containerCode;
entity.containerType = conveyorData.containerType;
entity.containerType = "YCLZT";
entity.isEmpty = conveyorData.isEmpty;
containerManage.CreateContainer(ContainerParkingPosition, entity,gameObject.layer);
}

View File

@ -183,14 +183,14 @@ public class StackerDevice : AbstractDevice
if(StackerForkActionEnum.ForkRest == stackerData.frontForkAction )
{
//排列层 有其一值为0则不处理
//if (stackerData.frontRow == 0 || stackerData.special1 == 0 || stackerData.frontLayer == 0)
//{
// return;
//}
if (stackerData.toRow == 0 || stackerData.toColumn == 0 || stackerData.toLayer == 0)
if (stackerData.frontRow == 0 || stackerData.special1 == 0 || stackerData.frontLayer == 0)
{
return;
}
// if (stackerData.toRow == 0 || stackerData.toColumn == 0 || stackerData.toLayer == 0)
// {
// return;
// }
Vector3 target = ForkCargoTarget();
//往目标点移动
forkCargo.transform.position = Vector3.MoveTowards(forkCargo.transform.position, target, speed * Time.deltaTime);
@ -202,17 +202,15 @@ public class StackerDevice : AbstractDevice
{
//获取库位坐标
string row = stackerData.toRow.ToString("D2");
string column = stackerData.toColumn.ToString("D2");
string layer = stackerData.toLayer.ToString("D2");
//当取货或方法是站台列,直接目的地就是站台列
//if (stackerData.toColumn >= 200)
//{
// column = stackerData.toColumn.ToString();
// layer = stackerData.toLayer.ToString("D2");
//}
string row = stackerData.frontRow.ToString("D2");
string column = stackerData.special1.ToString("D2");
string layer = stackerData.frontLayer.ToString("D2");
if(stackerData.toColumn >= 200)
{
column = stackerData.toColumn.ToString();
layer = stackerData.toLayer.ToString("D2");
}
string storageName = string.Format("{0}-{1}-{2}", row, column, layer);
GameObject storageObject = storageManage.GetStorageByName(storageName);

View File

@ -1,4 +1,6 @@
using Sirenix.OdinInspector;
/// <summary>
/// 堆垛机探货光电
/// </summary>
@ -8,7 +10,7 @@ public enum StackerForkCargoEnum
/// <summary>
/// 左浅有货
/// </summary>
LeftShallow = 0,
[LabelText("左浅有货")]LeftShallow = 0,
/// <summary>
/// 原位有货
/// </summary>

View File

@ -334,4 +334,11 @@ AnimationClip:
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
m_Events:
- time: 1.3333334
functionName: PlayStretchComplete
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0

View File

@ -20,7 +20,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 0, y: 0.0067, z: 0.71499926}
value: {x: 0, y: 0.0067, z: -0.536}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
@ -28,17 +28,17 @@ AnimationClip:
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 0.8333333
value: {x: 0, y: 0.0067, z: 0.364}
inSlope: {x: 0, y: 0, z: -0.46888837}
outSlope: {x: 0, y: 0, z: -0.46888837}
time: 0.6666667
value: {x: 0, y: 0.0067, z: -0.223}
inSlope: {x: 0, y: 0, z: 0.46785003}
outSlope: {x: 0, y: 0, z: 0.46785003}
tangentMode: 0
weightedMode: 0
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 1.35
value: {x: 0, y: 0.0067, z: 0.082}
time: 1.3333334
value: {x: 0, y: 0.0067, z: 0.0878}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
@ -54,7 +54,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: {x: 31.3795, y: -0.5468, z: 18.414}
value: {x: 31.3795, y: -0.5468, z: 17.854}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
@ -62,8 +62,8 @@ AnimationClip:
inWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
outWeight: {x: 0.33333334, y: 0.33333334, z: 0.33333334}
- serializedVersion: 3
time: 1.35
value: {x: 31.3795, y: -0.5468, z: 18.132004}
time: 1.3333334
value: {x: 31.3795, y: -0.5468, z: 18.1648}
inSlope: {x: 0, y: 0, z: 0}
outSlope: {x: 0, y: 0, z: 0}
tangentMode: 0
@ -108,7 +108,7 @@ AnimationClip:
m_AdditiveReferencePoseClip: {fileID: 0}
m_AdditiveReferencePoseTime: 0
m_StartTime: 0
m_StopTime: 1.35
m_StopTime: 1.3333334
m_OrientationOffsetY: 0
m_Level: 0
m_CycleOffset: 0
@ -138,7 +138,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.8333333
time: 0.6666667
value: 0
inSlope: 0
outSlope: 0
@ -147,7 +147,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.35
time: 1.3333334
value: 0
inSlope: 0
outSlope: 0
@ -177,7 +177,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.8333333
time: 0.6666667
value: 0.0067
inSlope: 0
outSlope: 0
@ -186,7 +186,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.35
time: 1.3333334
value: 0.0067
inSlope: 0
outSlope: 0
@ -208,7 +208,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: 0.71499926
value: -0.536
inSlope: 0
outSlope: 0
tangentMode: 136
@ -216,17 +216,17 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 0.8333333
value: 0.364
inSlope: -0.46888837
outSlope: -0.46888837
time: 0.6666667
value: -0.223
inSlope: 0.46785003
outSlope: 0.46785003
tangentMode: 136
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.35
value: 0.082
time: 1.3333334
value: 0.0878
inSlope: 0
outSlope: 0
tangentMode: 136
@ -255,7 +255,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.35
time: 1.3333334
value: 31.3795
inSlope: 0
outSlope: 0
@ -285,7 +285,7 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.35
time: 1.3333334
value: -0.5468
inSlope: 0
outSlope: 0
@ -307,7 +307,7 @@ AnimationClip:
m_Curve:
- serializedVersion: 3
time: 0
value: 18.414
value: 17.854
inSlope: 0
outSlope: 0
tangentMode: 136
@ -315,8 +315,8 @@ AnimationClip:
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1.35
value: 18.132004
time: 1.3333334
value: 18.1648
inSlope: 0
outSlope: 0
tangentMode: 136
@ -334,4 +334,11 @@ AnimationClip:
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
m_Events:
- time: 1.3333334
functionName: PlayShrinkComplete
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 35f948453d152a04986763f636b3c194
guid: c7c24aeb0ca291d4583b5e28baf58f80
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000

View File

@ -494,4 +494,11 @@ AnimationClip:
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
m_Events:
- time: 2
functionName: PlayStretchComplete
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0

View File

@ -458,4 +458,11 @@ AnimationClip:
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
m_Events:
- time: 1.6666666
functionName: PlayShrinkComplete
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0

View File

@ -334,4 +334,11 @@ AnimationClip:
m_EulerEditorCurves: []
m_HasGenericRootTransform: 0
m_HasMotionFloatCurves: 0
m_Events: []
m_Events:
- time: 1
functionName: PlayStretchComplete
data:
objectReferenceParameter: {fileID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0

Some files were not shown because too many files have changed in this diff Show More