Explorar el Código

3/2修改

2025/2/28 添加初始化狗的动画
调整Home场景的动画
添加部分用户登录信息(已经完成拉取用户信息,目前变量名未统一等待后端调整)
2025/3/1 language.json item 预留四个参数位
 "category":"", "type":"", "property":"",  "parameter":"",
添加warehouse后台通讯前的代码,和商店保持一致。
添加部分Home场景,狗吃喝逻辑控制
2025/3/2 完成大部分吃喝控制主逻辑。未来添加食物控制和后台数据同步功能。
修正左侧主菜单无法弹出bug。
Jees hace 3 meses
padre
commit
22a3db64be
Se han modificado 31 ficheros con 1687 adiciones y 558 borrados
  1. 66 37
      Assets/Resources/Data/languages.json
  2. 457 13
      Assets/Resources/Dog/AnimatorController/shibaInu/HomeDogAnimatorController.controller
  3. 9 3
      Assets/Resources/Shopping/ShoppingController.cs
  4. BIN
      Assets/Resources/Shopping/pictures/food_00001.jpg
  5. BIN
      Assets/Resources/Shopping/pictures/food_00001.png
  6. 1 1
      Assets/Resources/Shopping/pictures/food_00001.png.meta
  7. BIN
      Assets/Resources/Shopping/pictures/food_00002.png
  8. 143 0
      Assets/Resources/Shopping/pictures/food_00002.png.meta
  9. BIN
      Assets/Resources/Shopping/pictures/food_00003.png
  10. 143 0
      Assets/Resources/Shopping/pictures/food_00003.png.meta
  11. BIN
      Assets/Resources/Shopping/pictures/water_00001.png
  12. 143 0
      Assets/Resources/Shopping/pictures/water_00001.png.meta
  13. 25 13
      Assets/Resources/VoiceAndManu/MenuController.cs
  14. 14 1
      Assets/Resources/VoiceAndManu/VoiceController.cs
  15. 39 0
      Assets/Resources/Warehouse/ItemUseController.cs
  16. 2 0
      Assets/Resources/Warehouse/ItemUseController.cs.meta
  17. 0 22
      Assets/Resources/Warehouse/TestCase.cs
  18. 0 2
      Assets/Resources/Warehouse/TestCase.cs.meta
  19. 36 41
      Assets/Resources/Warehouse/WarehouseController.cs
  20. 345 265
      Assets/Scenes/Home.unity
  21. 4 96
      Assets/Scenes/Playground.unity
  22. 4 0
      Assets/Scripts/Develop Script/TestSetup.cs
  23. 1 1
      Assets/Scripts/GameControllers/DogInitialize.cs
  24. 5 6
      Assets/Scripts/GameControllers/UserProperty.cs
  25. 49 0
      Assets/Scripts/Home/BowlColliderController.cs
  26. 2 0
      Assets/Scripts/Home/BowlColliderController.cs.meta
  27. 177 38
      Assets/Scripts/Home/HomeController.cs
  28. 9 11
      Assets/Scripts/Home/HomeSunLight.cs
  29. 1 1
      Assets/Scripts/Playground/PlayToyController.cs
  30. 8 5
      Assets/Texture/Materials/White.mat
  31. 4 2
      Assets/Texture/Materials/wood.mat

+ 66 - 37
Assets/Resources/Data/languages.json

@@ -364,43 +364,15 @@
             "back":{
                 "en": "Back",
                 "zh-cn": "返回"
-            }
-        },
-        "item":{
-            "food":{
-                "food_00001":{
-                    "price": 10,
-                    "picture": "shopping/pictures/food_00001",
-                    "short_name":"狗粮",
-                    "type":"",
-                    "description":{
-                        "en": "Fresh Dog food",
-                        "zh-cn": "新鲜狗粮"
-                    }
-                },
-                "food_00002":{
-                    "price": 20,
-                    "picture": "",
-                    "short_name":"狗罐头",
-                    "type":"",
-                    "description":{
-                        "en": "Meal Can",
-                        "zh-cn": "纯肉狗罐头"
-                    }
-                },
-                "food_00003":{
-                    "price": 15,
-                    "picture": "",
-                    "short_name":"冻肉干",
-                    "type":"",
-                    "description":{
-                        "en": "Freezed meal",
-                        "zh-cn": "冻肉干"
-                    }
-                }
             },
-            "toy":{},
-            "other":{}
+            "yes":{
+                "en": "Yes",
+                "zh-cn": "是"
+            },
+            "no":{
+                "en": "No",
+                "zh-cn": "否"
+            }
         }
     },
     "warehouseUI":{
@@ -527,5 +499,62 @@
                 "zh-cn": "公"
             }
         }
-    }
+    },
+    "item":{
+            "food":{
+                "food_00001":{
+                    "price": 10,
+                    "picture": "shopping/pictures/food_00001",
+                    "short_name":"狗粮",
+                    "category":"",
+                    "type":"",
+                    "property":"",
+                    "parameter":"",
+                    "description":{
+                        "en": "Fresh Dog food",
+                        "zh-cn": "狗粮"
+                    }
+                },
+                "food_00002":{
+                    "price": 20,
+                    "picture": "shopping/pictures/food_00002",
+                    "short_name":"狗罐头",
+                    "category":"",
+                    "type":"",
+                    "property":"",
+                    "parameter":"",
+                    "description":{
+                        "en": "Canned meal",
+                        "zh-cn": "纯肉罐头"
+                    }
+                },
+                "food_00003":{
+                    "price": 15,
+                    "picture": "shopping/pictures/food_00003",
+                    "short_name":"冻肉干",
+                    "category":"",
+                    "type":"",
+                    "property":"",
+                    "parameter":"",
+                    "description":{
+                        "en": "Dried frozen meat",
+                        "zh-cn": "冻肉干"
+                    }
+                },
+                "water_00001":{
+                    "price": 0,
+                    "picture": "Shopping/pictures/water_00001",
+                    "category":"",
+                    "type":"",
+                    "property":"",
+                    "parameter":"",
+                    "description":{
+                        "en": "Water",
+                        "zh-cn": "饮用水"
+                    }
+                }
+            },
+            "toy":{},
+            "other":{}
+        }
 }

+ 457 - 13
Assets/Resources/Dog/AnimatorController/shibaInu/HomeDogAnimatorController.controller

@@ -102,9 +102,9 @@ AnimatorStateTransition:
   m_Mute: 0
   m_IsExit: 0
   serializedVersion: 3
-  m_TransitionDuration: 0.25
+  m_TransitionDuration: 0.4328579
   m_TransitionOffset: 0
-  m_ExitTime: 0.75
+  m_ExitTime: 0
   m_HasExitTime: 1
   m_HasFixedDuration: 1
   m_InterruptionSource: 0
@@ -226,6 +226,33 @@ AnimatorTransition:
   m_Mute: 0
   m_IsExit: 0
   serializedVersion: 1
+--- !u!1102 &-6737050940412621386
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: drink
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions:
+  - {fileID: -6463446782741146979}
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 3961138311024476536, guid: 0faf4e66268a11e4d982d9a0163734ca, type: 3}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1101 &-6709045085646986246
 AnimatorStateTransition:
   m_ObjectHideFlags: 1
@@ -305,6 +332,56 @@ AnimatorState:
   m_MirrorParameter: 
   m_CycleOffsetParameter: 
   m_TimeParameter: 
+--- !u!1101 &-6463446782741146979
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 2
+    m_ConditionEvent: isDrinking
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: 7678358449063203508}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.75
+  m_HasExitTime: 1
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
+--- !u!1101 &-6061770766121155186
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 2
+    m_ConditionEvent: isEating
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: -1642940618761458735}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.75
+  m_HasExitTime: 1
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
 --- !u!1102 &-5823170825087829897
 AnimatorState:
   serializedVersion: 6
@@ -480,13 +557,13 @@ AnimatorStateMachine:
     m_Position: {x: 370, y: 200, z: 0}
   - serializedVersion: 1
     m_State: {fileID: 6530397968288135108}
-    m_Position: {x: 0, y: 410, z: 0}
+    m_Position: {x: -260, y: 110, z: 0}
   - serializedVersion: 1
     m_State: {fileID: 6213453891328339389}
-    m_Position: {x: 270, y: 410, z: 0}
+    m_Position: {x: -260, y: 200, z: 0}
   - serializedVersion: 1
     m_State: {fileID: -8077790902788435736}
-    m_Position: {x: 540, y: 410, z: 0}
+    m_Position: {x: -260, y: 290, z: 0}
   m_ChildStateMachines:
   - serializedVersion: 1
     m_StateMachine: {fileID: 7491400470228967381}
@@ -494,17 +571,25 @@ AnimatorStateMachine:
   - serializedVersion: 1
     m_StateMachine: {fileID: -8193752181386249564}
     m_Position: {x: 810, y: 90, z: 0}
+  - serializedVersion: 1
+    m_StateMachine: {fileID: 4564759225059745143}
+    m_Position: {x: -60, y: 390, z: 0}
+  - serializedVersion: 1
+    m_StateMachine: {fileID: 1703739137727603885}
+    m_Position: {x: 190, y: 390, z: 0}
   m_AnyStateTransitions:
   - {fileID: -5792904878851015157}
   - {fileID: 4167072314692607191}
   - {fileID: 8206564768075581269}
   - {fileID: 8331535787116983140}
   - {fileID: 8198791292405850543}
+  - {fileID: 7630157628395322959}
+  - {fileID: 1643203011478807840}
   m_EntryTransitions: []
   m_StateMachineTransitions: {}
   m_StateMachineBehaviours: []
   m_AnyStatePosition: {x: 10, y: 60, z: 0}
-  m_EntryPosition: {x: 260, y: 110, z: 0}
+  m_EntryPosition: {x: 10, y: -100, z: 0}
   m_ExitPosition: {x: 1080, y: 40, z: 0}
   m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
   m_DefaultState: {fileID: 533779715773965248}
@@ -525,9 +610,9 @@ AnimatorStateTransition:
   m_Mute: 0
   m_IsExit: 0
   serializedVersion: 3
-  m_TransitionDuration: 0.25
+  m_TransitionDuration: 1.9558662
   m_TransitionOffset: 0
-  m_ExitTime: 0.95
+  m_ExitTime: 0.0000000012739961
   m_HasExitTime: 1
   m_HasFixedDuration: 1
   m_InterruptionSource: 0
@@ -560,6 +645,33 @@ AnimatorState:
   m_MirrorParameter: 
   m_CycleOffsetParameter: 
   m_TimeParameter: 
+--- !u!1102 &-2599437465997879747
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: startEating
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions:
+  - {fileID: 8841241978560686032}
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 2624586553352817104, guid: 1a349bfe663f8a848a567303e35c613a, type: 3}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1101 &-2350108852102139102
 AnimatorStateTransition:
   m_ObjectHideFlags: 1
@@ -577,9 +689,31 @@ AnimatorStateTransition:
   m_Mute: 0
   m_IsExit: 0
   serializedVersion: 3
+  m_TransitionDuration: 0.30236942
+  m_TransitionOffset: 0
+  m_ExitTime: 0
+  m_HasExitTime: 1
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
+--- !u!1101 &-2324590391539216189
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions: []
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: 533779715773965248}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
   m_TransitionDuration: 0.25
   m_TransitionOffset: 0
-  m_ExitTime: 0.75
+  m_ExitTime: 0.85
   m_HasExitTime: 1
   m_HasFixedDuration: 1
   m_InterruptionSource: 0
@@ -706,6 +840,33 @@ BlendTree:
   m_UseAutomaticThresholds: 1
   m_NormalizedBlendValues: 0
   m_BlendType: 0
+--- !u!1102 &-1642940618761458735
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: end
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions:
+  - {fileID: 8763467562222828337}
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 7271327554688620044, guid: 0faf4e66268a11e4d982d9a0163734ca, type: 3}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!206 &-1424107439792885017
 BlendTree:
   m_ObjectHideFlags: 1
@@ -786,6 +947,12 @@ AnimatorController:
     m_DefaultInt: 0
     m_DefaultBool: 0
     m_Controller: {fileID: 9100000}
+  - m_Name: isSitting
+    m_Type: 4
+    m_DefaultFloat: 0
+    m_DefaultInt: 0
+    m_DefaultBool: 0
+    m_Controller: {fileID: 9100000}
   - m_Name: isListening
     m_Type: 4
     m_DefaultFloat: 0
@@ -840,12 +1007,30 @@ AnimatorController:
     m_DefaultInt: 0
     m_DefaultBool: 0
     m_Controller: {fileID: 9100000}
-  - m_Name: isSitting
+  - m_Name: isEating
+    m_Type: 4
+    m_DefaultFloat: 0
+    m_DefaultInt: 0
+    m_DefaultBool: 0
+    m_Controller: {fileID: 9100000}
+  - m_Name: isDrinking
     m_Type: 4
     m_DefaultFloat: 0
     m_DefaultInt: 0
     m_DefaultBool: 0
     m_Controller: {fileID: 9100000}
+  - m_Name: drink
+    m_Type: 9
+    m_DefaultFloat: 0
+    m_DefaultInt: 0
+    m_DefaultBool: 0
+    m_Controller: {fileID: 9100000}
+  - m_Name: eat
+    m_Type: 9
+    m_DefaultFloat: 0
+    m_DefaultInt: 0
+    m_DefaultBool: 0
+    m_Controller: {fileID: 9100000}
   m_AnimatorLayers:
   - serializedVersion: 5
     m_Name: Base Layer
@@ -859,6 +1044,31 @@ AnimatorController:
     m_IKPass: 0
     m_SyncedLayerAffectsTiming: 0
     m_Controller: {fileID: 9100000}
+--- !u!1101 &23017973738211082
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 1
+    m_ConditionEvent: isDrinking
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: -6737050940412621386}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.75
+  m_HasExitTime: 1
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
 --- !u!1102 &533779715773965248
 AnimatorState:
   serializedVersion: 6
@@ -907,9 +1117,9 @@ AnimatorStateTransition:
   m_Mute: 0
   m_IsExit: 0
   serializedVersion: 3
-  m_TransitionDuration: 0.25
+  m_TransitionDuration: 0.9356814
   m_TransitionOffset: 0
-  m_ExitTime: 0.75
+  m_ExitTime: 6.339836e-10
   m_HasExitTime: 1
   m_HasFixedDuration: 1
   m_InterruptionSource: 0
@@ -969,6 +1179,59 @@ AnimatorState:
   m_MirrorParameter: 
   m_CycleOffsetParameter: 
   m_TimeParameter: 
+--- !u!1101 &1643203011478807840
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 1
+    m_ConditionEvent: drink
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: 7946275187917164373}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.75
+  m_HasExitTime: 0
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
+--- !u!1107 &1703739137727603885
+AnimatorStateMachine:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: drink
+  m_ChildStates:
+  - serializedVersion: 1
+    m_State: {fileID: 7946275187917164373}
+    m_Position: {x: 240, y: 110, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: -6737050940412621386}
+    m_Position: {x: 380, y: 20, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: 7678358449063203508}
+    m_Position: {x: 550, y: 110, z: 0}
+  m_ChildStateMachines: []
+  m_AnyStateTransitions: []
+  m_EntryTransitions: []
+  m_StateMachineTransitions: {}
+  m_StateMachineBehaviours: []
+  m_AnyStatePosition: {x: 50, y: 20, z: 0}
+  m_EntryPosition: {x: 50, y: 120, z: 0}
+  m_ExitPosition: {x: 800, y: 120, z: 0}
+  m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
+  m_DefaultState: {fileID: 7946275187917164373}
 --- !u!1101 &1829056560027097270
 AnimatorStateTransition:
   m_ObjectHideFlags: 1
@@ -1208,6 +1471,61 @@ AnimatorStateTransition:
   m_InterruptionSource: 0
   m_OrderedInterruption: 1
   m_CanTransitionToSelf: 1
+--- !u!1107 &4564759225059745143
+AnimatorStateMachine:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: eat
+  m_ChildStates:
+  - serializedVersion: 1
+    m_State: {fileID: -2599437465997879747}
+    m_Position: {x: 240, y: 110, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: 5133975460496727864}
+    m_Position: {x: 380, y: 20, z: 0}
+  - serializedVersion: 1
+    m_State: {fileID: -1642940618761458735}
+    m_Position: {x: 560, y: 110, z: 0}
+  m_ChildStateMachines: []
+  m_AnyStateTransitions: []
+  m_EntryTransitions: []
+  m_StateMachineTransitions: {}
+  m_StateMachineBehaviours: []
+  m_AnyStatePosition: {x: 50, y: 20, z: 0}
+  m_EntryPosition: {x: 50, y: 120, z: 0}
+  m_ExitPosition: {x: 800, y: 120, z: 0}
+  m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
+  m_DefaultState: {fileID: -2599437465997879747}
+--- !u!1102 &5133975460496727864
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: eat
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions:
+  - {fileID: -6061770766121155186}
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 7129781966169002687, guid: 1a349bfe663f8a848a567303e35c613a, type: 3}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1101 &5220858351952885836
 AnimatorStateTransition:
   m_ObjectHideFlags: 1
@@ -1558,6 +1876,58 @@ AnimatorStateTransition:
   m_InterruptionSource: 0
   m_OrderedInterruption: 1
   m_CanTransitionToSelf: 1
+--- !u!1101 &7630157628395322959
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 1
+    m_ConditionEvent: eat
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: -2599437465997879747}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.75
+  m_HasExitTime: 0
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
+--- !u!1102 &7678358449063203508
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: end
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions:
+  - {fileID: -2324590391539216189}
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 7271327554688620044, guid: 0faf4e66268a11e4d982d9a0163734ca, type: 3}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1102 &7719881207126272120
 AnimatorState:
   serializedVersion: 6
@@ -1610,6 +1980,33 @@ AnimatorStateTransition:
   m_InterruptionSource: 0
   m_OrderedInterruption: 1
   m_CanTransitionToSelf: 1
+--- !u!1102 &7946275187917164373
+AnimatorState:
+  serializedVersion: 6
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: startDrinking
+  m_Speed: 1
+  m_CycleOffset: 0
+  m_Transitions:
+  - {fileID: 23017973738211082}
+  m_StateMachineBehaviours: []
+  m_Position: {x: 50, y: 50, z: 0}
+  m_IKOnFeet: 0
+  m_WriteDefaultValues: 1
+  m_Mirror: 0
+  m_SpeedParameterActive: 0
+  m_MirrorParameterActive: 0
+  m_CycleOffsetParameterActive: 0
+  m_TimeParameterActive: 0
+  m_Motion: {fileID: 2624586553352817104, guid: 1a349bfe663f8a848a567303e35c613a, type: 3}
+  m_Tag: 
+  m_SpeedParameter: 
+  m_MirrorParameter: 
+  m_CycleOffsetParameter: 
+  m_TimeParameter: 
 --- !u!1101 &8198791292405850543
 AnimatorStateTransition:
   m_ObjectHideFlags: 1
@@ -1648,7 +2045,7 @@ AnimatorStateTransition:
     m_EventTreshold: 0
   m_DstStateMachine: {fileID: 0}
   m_DstState: {fileID: 6213453891328339389}
-  m_Solo: 1
+  m_Solo: 0
   m_Mute: 0
   m_IsExit: 0
   serializedVersion: 3
@@ -1843,6 +2240,53 @@ AnimatorStateTransition:
   m_InterruptionSource: 0
   m_OrderedInterruption: 1
   m_CanTransitionToSelf: 1
+--- !u!1101 &8763467562222828337
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions: []
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: 533779715773965248}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.85
+  m_HasExitTime: 1
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
+--- !u!1101 &8841241978560686032
+AnimatorStateTransition:
+  m_ObjectHideFlags: 1
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: 
+  m_Conditions:
+  - m_ConditionMode: 1
+    m_ConditionEvent: isEating
+    m_EventTreshold: 0
+  m_DstStateMachine: {fileID: 0}
+  m_DstState: {fileID: 5133975460496727864}
+  m_Solo: 0
+  m_Mute: 0
+  m_IsExit: 0
+  serializedVersion: 3
+  m_TransitionDuration: 0.25
+  m_TransitionOffset: 0
+  m_ExitTime: 0.75
+  m_HasExitTime: 1
+  m_HasFixedDuration: 1
+  m_InterruptionSource: 0
+  m_OrderedInterruption: 1
+  m_CanTransitionToSelf: 1
 --- !u!1101 &9147677112561107424
 AnimatorStateTransition:
   m_ObjectHideFlags: 1

+ 9 - 3
Assets/Resources/Shopping/ShoppingController.cs

@@ -5,7 +5,9 @@ using Unity.VisualScripting;
 using UnityEngine;
 using UnityEngine.UIElements;
 
-// 这个controller 是用于控制 Shopping UI菜单的
+/* 这个controller 是用于控制 Shopping UI菜单的
+ */
+
 public class ShoppingController : MonoBehaviour
 {
     // Start is called before the first frame update
@@ -82,6 +84,10 @@ public class ShoppingController : MonoBehaviour
         otherButton.text = textValue;
         textValue = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "shoppingUI", "button", "back", EnviromentSetting.languageCode });
         backButton.text = textValue;
+        textValue = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "shoppingUI", "button", "yes", EnviromentSetting.languageCode });
+        yesButton.text = textValue;
+        textValue = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "shoppingUI", "button", "no", EnviromentSetting.languageCode });
+        noButton.text = textValue;
     }
 
     /*获取所有产品列表,切换商品分类之后,需要重新读取和加载
@@ -90,7 +96,7 @@ public class ShoppingController : MonoBehaviour
     {
         // 按照类别获取shopping items
         shoppingItems.Clear();
-        string itemRawData = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "shoppingUI", "item", type});
+        string itemRawData = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "item", type});
         Dictionary<string, object> itemDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(itemRawData);
         foreach (string _item in itemDict.Keys)
         {
@@ -118,7 +124,7 @@ public class ShoppingController : MonoBehaviour
             var description = itemFrame.Q<Label>("description");
             description.text = item.description;
             var price = itemFrame.Q<Label>("price");
-            price.text = item.price;
+            price.text = "$ "+item.price;
             var texture = Resources.Load<Texture2D>(item.picture);
             var picture = itemFrame.Q<VisualElement>("picture");
             picture.style.backgroundImage = new StyleBackground(texture);

BIN
Assets/Resources/Shopping/pictures/food_00001.jpg


BIN
Assets/Resources/Shopping/pictures/food_00001.png


+ 1 - 1
Assets/Resources/Shopping/pictures/food_00001.jpg.meta → Assets/Resources/Shopping/pictures/food_00001.png.meta

@@ -1,5 +1,5 @@
 fileFormatVersion: 2
-guid: 12da6cfbd8695fb418fc5d55476fa32f
+guid: 2f703e6f408109944809d0f47db9bbbf
 TextureImporter:
   internalIDToNameTable: []
   externalObjects: {}

BIN
Assets/Resources/Shopping/pictures/food_00002.png


+ 143 - 0
Assets/Resources/Shopping/pictures/food_00002.png.meta

@@ -0,0 +1,143 @@
+fileFormatVersion: 2
+guid: b24804b90c6316043a9aa9504f401703
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 13
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+    flipGreenChannel: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMipmapLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  swizzle: 50462976
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 4
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: iOS
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    customData: 
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    spriteCustomMetadata:
+      entries: []
+    nameFileIdTable: {}
+  mipmapLimitGroupName: 
+  pSDRemoveMatte: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Resources/Shopping/pictures/food_00003.png


+ 143 - 0
Assets/Resources/Shopping/pictures/food_00003.png.meta

@@ -0,0 +1,143 @@
+fileFormatVersion: 2
+guid: 40748953c219588418f336e2ffae583a
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 13
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+    flipGreenChannel: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMipmapLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  swizzle: 50462976
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 4
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: iOS
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    customData: 
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    spriteCustomMetadata:
+      entries: []
+    nameFileIdTable: {}
+  mipmapLimitGroupName: 
+  pSDRemoveMatte: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/Resources/Shopping/pictures/water_00001.png


+ 143 - 0
Assets/Resources/Shopping/pictures/water_00001.png.meta

@@ -0,0 +1,143 @@
+fileFormatVersion: 2
+guid: 9411732ea7c1c474ca3b7a61a8110d1c
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 13
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+    flipGreenChannel: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  ignoreMipmapLimit: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  swizzle: 50462976
+  cookieLightType: 0
+  platformSettings:
+  - serializedVersion: 4
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 4
+    buildTarget: iOS
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    ignorePlatformSupport: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    customData: 
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+    spriteCustomMetadata:
+      entries: []
+    nameFileIdTable: {}
+  mipmapLimitGroupName: 
+  pSDRemoveMatte: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 25 - 13
Assets/Resources/VoiceAndManu/MenuController.cs

@@ -59,21 +59,20 @@ public class MenuController : MonoBehaviour
         warehouse.RegisterCallback<ClickEvent>(e => WarehouseClick(e));
         status.RegisterCallback<ClickEvent>(e => StatusClick(e));
         cameraBtn.RegisterCallback<ClickEvent>(e => CameraClick(e));
-        
-    }
 
-    private void Start()
-    {
-        var root = GetComponent<UIDocument>().rootVisualElement;
+        //var root = GetComponent<UIDocument>().rootVisualElement;
         dogIcon = root.Q<VisualElement>("dogMenu").Q<VisualElement>("dogIcon");
         dogList = root.Q<VisualElement>("dogMenu").Q<VisualElement>("dogList");
-        foreach (Label child in dogList.Children())
-        {
-            dogNames.Add(child);
-        }
-        DogNameInit();      // 初始化狗的名字
+
+        DogNameInit();      // 初始化狗的名字,这里当菜单重新激活后再次加载
 
         dogIcon.RegisterCallback<ClickEvent>(e => DogIconClick(e));
+
+    }
+
+    private void Start()
+    {
+        DogNameInit();      // 初始化狗的名字,首次加载
     }
 
     private void OnDisable()
@@ -88,6 +87,7 @@ public class MenuController : MonoBehaviour
         ScaleDogName();         // 放大缩小选中狗的名字
     }
 
+    #region 右侧按键控制
     Vector2 CalcPosition(Vector2 curPosition, float angle, float distance)
     {
         float radians = angle * Mathf.Deg2Rad;
@@ -199,6 +199,7 @@ public class MenuController : MonoBehaviour
 
     void DogIconClick(ClickEvent e)
     {
+        Debug.Log("DogIconClick");
         if (dogList.visible == false)
         {
             dogList.visible = true;
@@ -207,9 +208,13 @@ public class MenuController : MonoBehaviour
         {
             dogList.visible = false;
         }
-       
+
+
+
     }
+    #endregion
 
+    #region 左侧菜单控制
     // 点击狗的名字时候处理
     void DogNameClick(ClickEvent e, int index)
     {
@@ -226,8 +231,14 @@ public class MenuController : MonoBehaviour
     // 初始化狗的名字
     void DogNameInit()
     {
-        int i = 0;
-        for (i = 0; i < UserProperty.dogs.Count; i++)
+        dogNames.Clear();       // 清空Label列表
+        foreach (Label child in dogList.Children())     // 寻找Label元素加入列表
+        {
+            dogNames.Add(child);
+        }
+
+        // 注入狗的名字
+        for (int i = 0; i < UserProperty.dogs.Count; i++)
         {
             int index = i;
             dogNames[i].style.display = DisplayStyle.Flex;
@@ -252,6 +263,7 @@ public class MenuController : MonoBehaviour
             }
         }
     }
+    #endregion
 }
 
 public static class MenuData

+ 14 - 1
Assets/Resources/VoiceAndManu/VoiceController.cs

@@ -63,6 +63,10 @@ public class VoiceController : MonoBehaviour
 
         Debug.Log("voice button pointer down.");
         HomeController.listenBreak = true;
+        foreach (var dog in HomeController.dogsInScene)
+        {
+            dog.animator.SetTrigger("listen");
+        }
         StartRecording();
         waveForm.visible = true;
     }
@@ -71,11 +75,19 @@ public class VoiceController : MonoBehaviour
     void VoiceBtnPointerUp(PointerUpEvent evt)
     {
         Debug.Log("voice button pointer up.");
-        HomeController.listenBreak = false;
+        //HomeController.listenBreak = false;
         StopRecording();
         waveForm.visible = false;
+
+        HomeController.listenBreak = false;
+        // TODO 以后根据音频识别返回值修改狗的行动
+        foreach (var dog in HomeController.dogsInScene)
+        {
+            dog.animator.SetBool("isListening", false);
+        }
     }
 
+    #region 录音相关
     // 开始录音
     void StartRecording()
     {
@@ -157,4 +169,5 @@ public class VoiceController : MonoBehaviour
         }
     }
 
+    #endregion
 }

+ 39 - 0
Assets/Resources/Warehouse/ItemUseController.cs

@@ -0,0 +1,39 @@
+using UnityEngine;
+
+/* 具体使用哪个道具产生的效果,包括结束的效果回调函数
+ */
+
+public class ItemUseController : MonoBehaviour
+{
+    // Start is called once before the first execution of Update after the MonoBehaviour is created
+    //void Start()
+    //{
+        
+    //}
+
+    // Update is called once per frame
+    //void Update()
+    //{
+        
+    //}
+
+    public static void ItemUsed(string itemId)
+    {
+        if (itemId == "water_00001")
+        {
+            var bowls = GameObject.Find("Bowls");
+            var bowlWater = bowls.transform.Find("Bowl_water").gameObject;
+            bowlWater.transform.localPosition = Vector3.zero;
+            var water = bowlWater.transform.Find("Water").gameObject;
+            water.SetActive(true);
+            foreach (var dogInScene in HomeController.dogsInScene)
+            {
+                dogInScene.StartItemConsume(ItemGroup.water);
+            }
+
+          
+
+            // TODO 网络通讯后刷新数据
+        }
+    }
+}

+ 2 - 0
Assets/Resources/Warehouse/ItemUseController.cs.meta

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

+ 0 - 22
Assets/Resources/Warehouse/TestCase.cs

@@ -1,22 +0,0 @@
-using System.Collections.Generic;
-using UnityEngine;
-
-public class TestCase : MonoBehaviour
-{
-    // Start is called once before the first execution of Update after the MonoBehaviour is created
-    void Start()
-    {
-        List<ItemStock> items = new List<ItemStock>();
-        items.Add(new ItemStock("food_00001", 14));
-        UserProperty.itemStocks.Add("food", items);
-        items.Clear();
-        items.Add(new ItemStock("other_00001", 1));
-        UserProperty.itemStocks.Add("other", items);
-    }
-
-    // Update is called once per frame
-    void Update()
-    {
-        
-    }
-}

+ 0 - 2
Assets/Resources/Warehouse/TestCase.cs.meta

@@ -1,2 +0,0 @@
-fileFormatVersion: 2
-guid: 0663909cd68af3a44a87031aedba5e8e

+ 36 - 41
Assets/Resources/Warehouse/WarehouseController.cs

@@ -23,7 +23,7 @@ public class WarehouseController : MonoBehaviour
     // 选中的产品
     private string selectedItemId;
 
-    void OnEable()
+    void OnEnable()
     {
         // 基层元素获取
         var root = GetComponent<UIDocument>().rootVisualElement;
@@ -45,13 +45,13 @@ public class WarehouseController : MonoBehaviour
         msgField = msgRoot.Q<VisualElement>("msgField");
         msgBody = msgField.Q<Label>("msgBody");
         yesButton = msgField.Q<Button>("msgYes");
+        yesButton.clicked += MsgYesClick;
         noButton = msgField.Q<Button>("msgNo");
         noButton.clicked += MsgNoClick;
 
         //初始化设定
         LanguageSetting();
-        //DataLoading();
-        GetItemList("food");
+
         foodButton.transform.scale = new Vector3(1.2f, 1.2f);
         InstallItems("food");
     }
@@ -79,53 +79,51 @@ public class WarehouseController : MonoBehaviour
         otherButton.text = textValue;
         textValue = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "shoppingUI", "button", "back", EnviromentSetting.languageCode });
         backButton.text = textValue;
+        textValue = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "shoppingUI", "button", "yes", EnviromentSetting.languageCode });
+        yesButton.text = textValue;
+        textValue = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "shoppingUI", "button", "no", EnviromentSetting.languageCode });
+        noButton.text = textValue;
     }
 
-    //获取所有产品列表,切换商品分类之后,需要重新读取和加载
-    void GetItemList(string type)
-    {
-        // 按照类别获取warehouse
-        warehouseItems.Clear();
-        // todo 下面这一端要重写。Warehouse获取清单方式和Shopping UI不同
-        if(UserProperty.itemStocks.TryGetValue(type, out List < ItemStock > items)){
-            //List<ItemStock> items = UserProperty.itemStocks[type];
-            // itemDict获取当前分类下所有item
-            string itemRawData = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "shoppingUI", "item", type });
-            Dictionary<string, object> itemDict = JsonConvert.DeserializeObject<Dictionary<string, object>>(itemRawData);
-            foreach (ItemStock item in items)
-            {
-                var itemDetail = JsonConvert.DeserializeObject<Dictionary<string, object>>(itemDict[item.id].ToString());
-                string price = itemDetail["price"].ToString();
-                string picture = itemDetail["picture"].ToString();
-                var desc = JsonConvert.DeserializeObject<Dictionary<string, object>>(itemDetail["description"].ToString());
-                string description = desc[EnviromentSetting.languageCode].ToString();
-                ItemInWarehouse searchedItem = new(item.id, description, price, picture);
-                warehouseItems.Add(searchedItem);
-            }
-        }
-    }
-
+    
     // 将items装载到菜单中,切换商品分类之后,需要重新读取和加载
     void InstallItems(string type)
     {
         var root = GetComponent<UIDocument>().rootVisualElement;
         itemListView.Clear();
         VisualTreeAsset itemResource = Resources.Load<VisualTreeAsset>("Shopping/Item");
-        List<ItemInWarehouse> items = new();
-        foreach (var item in warehouseItems)
+        List<Item> items;
+        if (type == "food")
+        {
+            items = UserProperty.food;
+        }else if (type == "toy")
+        {
+            items = UserProperty.toy;
+        }
+        else
+        {
+            items = UserProperty.other;
+        }
+        foreach (var item in items)
         {
             var itemFrame = new VisualElement();
             itemFrame = itemResource.CloneTree();
+            // 从language.json读取item的文字描述
+            string desc = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "item", type, item.id, "description" , EnviromentSetting.languageCode});
             var description = itemFrame.Q<Label>("description");
-            description.text = item.description;
+            description.text = desc;
+
             // 这里复用 shopping UI 里面的 item.uxml
             // UI 里面命名为price,实际是qty
             var price = itemFrame.Q<Label>("price");
-            price.text = item.qty;
-            var texture = Resources.Load<Texture2D>(item.picture);
+            price.text = item.qty.ToString();
+
+            // 读取图片
+            string picturePath = GameTool.GetValueAtPath(EnviromentSetting.languageData, new string[] { "item", type, item.id, "picture" });
+            var texture = Resources.Load<Texture2D>(picturePath);
             var picture = itemFrame.Q<VisualElement>("picture");
             picture.style.backgroundImage = new StyleBackground(texture);
-            itemFrame.RegisterCallback<ClickEvent>(e => ItemClick(e, item.id, item.description));
+            itemFrame.RegisterCallback<ClickEvent>(e => ItemClick(e, item.id, desc));
 
             itemListView.Add(itemFrame);
         }
@@ -144,18 +142,13 @@ public class WarehouseController : MonoBehaviour
         var uiPlaceholder = GameObject.Find("UI Placeholder");
         if (uiPlaceholder != null)
         {
-            var shoppingUI = uiPlaceholder.transform.Find("Warehouse").gameObject;
+            var warehouseUI = uiPlaceholder.transform.Find("Warehouse").gameObject;
             var vamUI = uiPlaceholder.transform.Find("VoiceAndMenu").gameObject;
-            shoppingUI.SetActive(false);
+            warehouseUI.SetActive(false);
             vamUI.SetActive(true);
         }
     }
 
-    // 数据读取
-    void DataLoading()
-    {
-        
-    }
 
     void TabSwitch(Button btn)
     {
@@ -166,7 +159,7 @@ public class WarehouseController : MonoBehaviour
         btn.transform.scale = new Vector3(1.2f, 1.2f, 1);
         itemListView.Clear();
         // 这里btn.name必须和json里面商品类别完全匹配
-        GetItemList(btn.name);
+        //GetItemList(btn.name);
         InstallItems(btn.name);
     }
 
@@ -181,6 +174,8 @@ public class WarehouseController : MonoBehaviour
     {
         Debug.Log("msg yes clicked");
         msgRoot.visible = false;
+        ItemUseController.ItemUsed(selectedItemId);
+        BackBtnClick();
     }
 
 }

+ 345 - 265
Assets/Scenes/Home.unity

@@ -20,11 +20,11 @@ RenderSettings:
   m_FogDensity: 0.01
   m_LinearFogStart: 0
   m_LinearFogEnd: 300
-  m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
+  m_AmbientSkyColor: {r: 0.49803922, g: 0.49803922, b: 0.49803922, a: 1}
   m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
   m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
   m_AmbientIntensity: 1
-  m_AmbientMode: 0
+  m_AmbientMode: 3
   m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
   m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
   m_HaloStrength: 0.5
@@ -130,7 +130,6 @@ GameObject:
   - component: {fileID: 86073301}
   - component: {fileID: 86073304}
   - component: {fileID: 86073303}
-  - component: {fileID: 86073302}
   m_Layer: 0
   m_Name: Wall 2D
   m_TagString: Untagged
@@ -153,28 +152,6 @@ Transform:
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
---- !u!64 &86073302
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 86073300}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &86073303
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -239,7 +216,6 @@ GameObject:
   - component: {fileID: 103351772}
   - component: {fileID: 103351775}
   - component: {fileID: 103351774}
-  - component: {fileID: 103351773}
   m_Layer: 0
   m_Name: Ceiling
   m_TagString: Untagged
@@ -257,33 +233,11 @@ Transform:
   serializedVersion: 2
   m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068}
   m_LocalPosition: {x: 0.64, y: 6, z: -0.13}
-  m_LocalScale: {x: 22, y: 22, z: 1}
+  m_LocalScale: {x: 22, y: 22, z: 2}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0}
---- !u!64 &103351773
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 103351771}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &103351774
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -380,7 +334,7 @@ PrefabInstance:
     m_Modifications:
     - target: {fileID: 2417705292335416526, guid: 358eaf0dc05de8c4b925b8d7b41c3df9, type: 3}
       propertyPath: m_Name
-      value: dog
+      value: dog(not use)
       objectReference: {fileID: 0}
     - target: {fileID: 2417705292335416526, guid: 358eaf0dc05de8c4b925b8d7b41c3df9, type: 3}
       propertyPath: m_IsActive
@@ -404,7 +358,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 3082356105365184116, guid: 358eaf0dc05de8c4b925b8d7b41c3df9, type: 3}
       propertyPath: m_LocalPosition.y
-      value: 0
+      value: -0.14
       objectReference: {fileID: 0}
     - target: {fileID: 3082356105365184116, guid: 358eaf0dc05de8c4b925b8d7b41c3df9, type: 3}
       propertyPath: m_LocalPosition.z
@@ -820,6 +774,155 @@ Transform:
   m_Children: []
   m_Father: {fileID: 0}
   m_LocalEulerAnglesHint: {x: 107.618, y: 0, z: 0}
+--- !u!1001 &253370031
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    serializedVersion: 3
+    m_TransformParent: {fileID: 1726968933}
+    m_Modifications:
+    - target: {fileID: 1316276264652659998, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_Name
+      value: Food
+      objectReference: {fileID: 0}
+    - target: {fileID: 1316276264652659998, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_StaticEditorFlags
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1632938634403251778, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_Name
+      value: Bowl_food
+      objectReference: {fileID: 0}
+    - target: {fileID: 1632938634403251778, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_StaticEditorFlags
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: -10
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    m_RemovedComponents:
+    - {fileID: 6558069851603559208, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+    m_RemovedGameObjects: []
+    m_AddedGameObjects: []
+    m_AddedComponents:
+    - targetCorrespondingSourceObject: {fileID: 1632938634403251778, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      insertIndex: -1
+      addedObject: {fileID: 253370034}
+    - targetCorrespondingSourceObject: {fileID: 1632938634403251778, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      insertIndex: -1
+      addedObject: {fileID: 253370037}
+    - targetCorrespondingSourceObject: {fileID: 1632938634403251778, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+      insertIndex: -1
+      addedObject: {fileID: 253370040}
+  m_SourcePrefab: {fileID: 100100000, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+--- !u!4 &253370032 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 6920918337413409961, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+  m_PrefabInstance: {fileID: 253370031}
+  m_PrefabAsset: {fileID: 0}
+--- !u!1 &253370033 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 1632938634403251778, guid: b23aa0f47b77fbc4c8e0a2a9adc0fb29, type: 3}
+  m_PrefabInstance: {fileID: 253370031}
+  m_PrefabAsset: {fileID: 0}
+--- !u!65 &253370034
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 253370033}
+  m_Material: {fileID: 0}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_LayerOverridePriority: 0
+  m_IsTrigger: 1
+  m_ProvidesContacts: 0
+  m_Enabled: 1
+  serializedVersion: 3
+  m_Size: {x: 0.2857564, y: 0.07002613, z: 0.28575647}
+  m_Center: {x: -0.00000008940697, y: 0.035010584, z: -0.00000040978193}
+--- !u!54 &253370037
+Rigidbody:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 253370033}
+  serializedVersion: 4
+  m_Mass: 1
+  m_Drag: 0
+  m_AngularDrag: 0.05
+  m_CenterOfMass: {x: 0, y: 0, z: 0}
+  m_InertiaTensor: {x: 1, y: 1, z: 1}
+  m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ImplicitCom: 1
+  m_ImplicitTensor: 1
+  m_UseGravity: 0
+  m_IsKinematic: 1
+  m_Interpolate: 0
+  m_Constraints: 0
+  m_CollisionDetection: 0
+--- !u!114 &253370040
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 253370033}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 78dd6ebe4f0f2524a993012b3a8857b0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &289564901
 GameObject:
   m_ObjectHideFlags: 0
@@ -990,7 +1093,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 36c6647456e97cf4dafb6e0b44866c83, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  position: {x: 0, y: 0, z: 0}
+  position: {x: 0, y: -10, z: 0}
   rotation: {x: 0, y: 0, z: 0}
   scale: {x: 1, y: 1, z: 1}
   dogDisplayName: 
@@ -1061,6 +1164,159 @@ Transform:
   m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 497eeb713045b2c4b84c9c4ec3b01784, type: 3}
   m_PrefabInstance: {fileID: 482970761}
   m_PrefabAsset: {fileID: 0}
+--- !u!1001 &502898574
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    serializedVersion: 3
+    m_TransformParent: {fileID: 1726968933}
+    m_Modifications:
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: -10
+      objectReference: {fileID: 0}
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 277856888336361184, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_Mesh
+      value: 
+      objectReference: {fileID: 5243637740095923077, guid: 9eee4938b08ad0846aca26f89c4516df, type: 3}
+    - target: {fileID: 2024820700466576722, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_Enabled
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 2632868419592774394, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_StaticEditorFlags
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 4438361123424968881, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_Name
+      value: Bowl_water
+      objectReference: {fileID: 0}
+    - target: {fileID: 4438361123424968881, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      propertyPath: m_StaticEditorFlags
+      value: 0
+      objectReference: {fileID: 0}
+    m_RemovedComponents:
+    - {fileID: 9077489341479908261, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+    m_RemovedGameObjects: []
+    m_AddedGameObjects: []
+    m_AddedComponents:
+    - targetCorrespondingSourceObject: {fileID: 4438361123424968881, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      insertIndex: -1
+      addedObject: {fileID: 502898577}
+    - targetCorrespondingSourceObject: {fileID: 4438361123424968881, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      insertIndex: -1
+      addedObject: {fileID: 502898580}
+    - targetCorrespondingSourceObject: {fileID: 4438361123424968881, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+      insertIndex: -1
+      addedObject: {fileID: 502898583}
+  m_SourcePrefab: {fileID: 100100000, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+--- !u!4 &502898575 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 25269467461883209, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+  m_PrefabInstance: {fileID: 502898574}
+  m_PrefabAsset: {fileID: 0}
+--- !u!1 &502898576 stripped
+GameObject:
+  m_CorrespondingSourceObject: {fileID: 4438361123424968881, guid: cc1d130c0e7512a4cadff14050b422dc, type: 3}
+  m_PrefabInstance: {fileID: 502898574}
+  m_PrefabAsset: {fileID: 0}
+--- !u!65 &502898577
+BoxCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 502898576}
+  m_Material: {fileID: 0}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_LayerOverridePriority: 0
+  m_IsTrigger: 1
+  m_ProvidesContacts: 0
+  m_Enabled: 1
+  serializedVersion: 3
+  m_Size: {x: 0.19957918, y: 0.06981205, z: 0.19957921}
+  m_Center: {x: -0.00000008568168, y: 0.03515504, z: -0.0000004246831}
+--- !u!54 &502898580
+Rigidbody:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 502898576}
+  serializedVersion: 4
+  m_Mass: 1
+  m_Drag: 0
+  m_AngularDrag: 0.05
+  m_CenterOfMass: {x: 0, y: 0, z: 0}
+  m_InertiaTensor: {x: 1, y: 1, z: 1}
+  m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_IncludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ExcludeLayers:
+    serializedVersion: 2
+    m_Bits: 0
+  m_ImplicitCom: 1
+  m_ImplicitTensor: 1
+  m_UseGravity: 1
+  m_IsKinematic: 1
+  m_Interpolate: 0
+  m_Constraints: 0
+  m_CollisionDetection: 0
+--- !u!114 &502898583
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 502898576}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 78dd6ebe4f0f2524a993012b3a8857b0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!1 &592955641
 GameObject:
   m_ObjectHideFlags: 0
@@ -1072,7 +1328,6 @@ GameObject:
   - component: {fileID: 592955642}
   - component: {fileID: 592955645}
   - component: {fileID: 592955644}
-  - component: {fileID: 592955643}
   m_Layer: 0
   m_Name: Wall 1D
   m_TagString: Untagged
@@ -1095,28 +1350,6 @@ Transform:
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!64 &592955643
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 592955641}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &592955644
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -1343,7 +1576,6 @@ GameObject:
   - component: {fileID: 685255410}
   - component: {fileID: 685255413}
   - component: {fileID: 685255412}
-  - component: {fileID: 685255411}
   m_Layer: 0
   m_Name: Wall 3
   m_TagString: Untagged
@@ -1366,28 +1598,6 @@ Transform:
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 180, y: 90, z: 0}
---- !u!64 &685255411
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 685255409}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &685255412
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -1523,7 +1733,6 @@ GameObject:
   - component: {fileID: 777376804}
   - component: {fileID: 777376807}
   - component: {fileID: 777376806}
-  - component: {fileID: 777376805}
   m_Layer: 0
   m_Name: Wall 4
   m_TagString: Untagged
@@ -1541,33 +1750,11 @@ Transform:
   serializedVersion: 2
   m_LocalRotation: {x: 1, y: 0, z: 0, w: 0}
   m_LocalPosition: {x: 0, y: 2, z: -10}
-  m_LocalScale: {x: 25, y: 5, z: 1}
+  m_LocalScale: {x: 25, y: 10, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 180, y: 0, z: 0}
---- !u!64 &777376805
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 777376803}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &777376806
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -1972,7 +2159,7 @@ Transform:
   m_GameObject: {fileID: 921216526}
   serializedVersion: 2
   m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
-  m_LocalPosition: {x: 0, y: 4, z: -6}
+  m_LocalPosition: {x: 0, y: 5, z: -6}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
   m_Children: []
@@ -2055,7 +2242,6 @@ GameObject:
   - component: {fileID: 1046407768}
   - component: {fileID: 1046407771}
   - component: {fileID: 1046407770}
-  - component: {fileID: 1046407769}
   m_Layer: 0
   m_Name: Wall 1U
   m_TagString: Untagged
@@ -2078,28 +2264,6 @@ Transform:
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!64 &1046407769
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1046407767}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &1046407770
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -2404,10 +2568,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 3b52a7c38081bba4aa6405d96d1b5fce, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  rotationSpeed: 30
-  rotateObj: {fileID: 240199426}
-  targetObj: {fileID: 1189983932}
-  rotateLight: {fileID: 240199425}
+  mainLight: {fileID: 921216527}
   targetCamera: {fileID: 1189983929}
   daySkybox: {fileID: 2100000, guid: 33ab377b49aa14f6fae6e5bac230a5d4, type: 2}
   nightSkybox: {fileID: 2100000, guid: 80fa4f34db87aad4d93c45188b19bfd6, type: 2}
@@ -2468,7 +2629,6 @@ GameObject:
   - component: {fileID: 1245550630}
   - component: {fileID: 1245550633}
   - component: {fileID: 1245550632}
-  - component: {fileID: 1245550631}
   m_Layer: 0
   m_Name: Wall 1R
   m_TagString: Untagged
@@ -2491,28 +2651,6 @@ Transform:
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!64 &1245550631
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1245550629}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &1245550632
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -2928,7 +3066,6 @@ GameObject:
   - component: {fileID: 1503779825}
   - component: {fileID: 1503779828}
   - component: {fileID: 1503779827}
-  - component: {fileID: 1503779826}
   m_Layer: 0
   m_Name: Wall 2U
   m_TagString: Untagged
@@ -2951,28 +3088,6 @@ Transform:
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
---- !u!64 &1503779826
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1503779824}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &1503779827
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -3037,7 +3152,6 @@ GameObject:
   - component: {fileID: 1587671324}
   - component: {fileID: 1587671327}
   - component: {fileID: 1587671326}
-  - component: {fileID: 1587671325}
   m_Layer: 0
   m_Name: Wall 2R
   m_TagString: Untagged
@@ -3060,28 +3174,6 @@ Transform:
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
---- !u!64 &1587671325
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1587671323}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &1587671326
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -3480,6 +3572,39 @@ MonoBehaviour:
         m_Calls: []
   m_LegacyBlendHint: 0
   m_ComponentOwner: {fileID: 207127012}
+--- !u!1 &1726968932
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1726968933}
+  m_Layer: 0
+  m_Name: Bowls
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1726968933
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1726968932}
+  serializedVersion: 2
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: -0.47954607, y: 0, z: 2.6302543}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 502898575}
+  - {fileID: 253370032}
+  m_Father: {fileID: 0}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1754269583
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -3597,7 +3722,6 @@ GameObject:
   - component: {fileID: 1886356401}
   - component: {fileID: 1886356404}
   - component: {fileID: 1886356403}
-  - component: {fileID: 1886356402}
   m_Layer: 0
   m_Name: Wall 2L
   m_TagString: Untagged
@@ -3620,28 +3744,6 @@ Transform:
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
---- !u!64 &1886356402
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1886356400}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &1886356403
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -4167,7 +4269,6 @@ GameObject:
   - component: {fileID: 2130545349}
   - component: {fileID: 2130545352}
   - component: {fileID: 2130545351}
-  - component: {fileID: 2130545350}
   m_Layer: 0
   m_Name: Wall 1L
   m_TagString: Untagged
@@ -4190,28 +4291,6 @@ Transform:
   m_Children: []
   m_Father: {fileID: 1360961875}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!64 &2130545350
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2130545348}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &2130545351
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -4279,3 +4358,4 @@ SceneRoots:
   - {fileID: 481637086}
   - {fileID: 157396461}
   - {fileID: 1669547633}
+  - {fileID: 1726968933}

+ 4 - 96
Assets/Scenes/Playground.unity

@@ -371,10 +371,10 @@ MonoBehaviour:
     friendlyToOtherDSDog: 50
     frisbeeSkill: 50
     ballSkill: 50
-    AIName: 50
-    AISit: 50
-    AILieDown: 50
-    AIRotate: 50
+    commandName: 50
+    commandSit: 50
+    commandLieDown: 50
+    commandRotate: 50
 --- !u!1001 &82528520
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -559,7 +559,6 @@ GameObject:
   - component: {fileID: 253874370}
   - component: {fileID: 253874369}
   - component: {fileID: 253874368}
-  - component: {fileID: 253874367}
   - component: {fileID: 253874366}
   - component: {fileID: 253874365}
   - component: {fileID: 253874364}
@@ -630,28 +629,6 @@ Rigidbody:
   m_Interpolate: 0
   m_Constraints: 0
   m_CollisionDetection: 0
---- !u!64 &253874367
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 253874363}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &253874368
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -913,7 +890,6 @@ GameObject:
   - component: {fileID: 538867665}
   - component: {fileID: 538867664}
   - component: {fileID: 538867663}
-  - component: {fileID: 538867662}
   - component: {fileID: 538867661}
   - component: {fileID: 538867660}
   - component: {fileID: 538867659}
@@ -984,28 +960,6 @@ Rigidbody:
   m_Interpolate: 0
   m_Constraints: 0
   m_CollisionDetection: 0
---- !u!64 &538867662
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 538867658}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &538867663
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -1299,7 +1253,6 @@ GameObject:
   - component: {fileID: 1014406028}
   - component: {fileID: 1014406027}
   - component: {fileID: 1014406026}
-  - component: {fileID: 1014406025}
   - component: {fileID: 1014406024}
   - component: {fileID: 1014406023}
   - component: {fileID: 1014406029}
@@ -1358,28 +1311,6 @@ Rigidbody:
   m_Interpolate: 0
   m_Constraints: 0
   m_CollisionDetection: 0
---- !u!64 &1014406025
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1014406022}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &1014406026
 MeshRenderer:
   m_ObjectHideFlags: 0
@@ -1646,7 +1577,6 @@ GameObject:
   - component: {fileID: 1159468018}
   - component: {fileID: 1159468017}
   - component: {fileID: 1159468016}
-  - component: {fileID: 1159468015}
   - component: {fileID: 1159468014}
   - component: {fileID: 1159468013}
   - component: {fileID: 1159468019}
@@ -1705,28 +1635,6 @@ Rigidbody:
   m_Interpolate: 0
   m_Constraints: 0
   m_CollisionDetection: 0
---- !u!64 &1159468015
-MeshCollider:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 1159468012}
-  m_Material: {fileID: 0}
-  m_IncludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_ExcludeLayers:
-    serializedVersion: 2
-    m_Bits: 0
-  m_LayerOverridePriority: 0
-  m_IsTrigger: 0
-  m_ProvidesContacts: 0
-  m_Enabled: 1
-  serializedVersion: 5
-  m_Convex: 0
-  m_CookingOptions: 30
-  m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
 --- !u!23 &1159468016
 MeshRenderer:
   m_ObjectHideFlags: 0

+ 4 - 0
Assets/Scripts/Develop Script/TestSetup.cs

@@ -10,6 +10,10 @@ public class TestSetup : MonoBehaviour
         DogProperty puppy = new DogProperty();
         UserProperty.dogs.Clear();
         UserProperty.dogs.Add(puppy);
+        UserProperty.food.Add(new Item("food_00001", 10));
+        UserProperty.food.Add(new Item("food_00002", 20));
+        UserProperty.food.Add(new Item("food_00003", 30));
+        UserProperty.food.Add(new Item("water_00001", 999));
 
         if (EnviromentSetting.languageData == null)
         {

+ 1 - 1
Assets/Scripts/GameControllers/DogInitialize.cs

@@ -8,7 +8,7 @@ using UnityEngine;
 
 public class DogInitialize: MonoBehaviour {
 
-    public Vector3 position, rotation, scale = new Vector3(1,1,1) ;       // 狗初始化位置
+    public Vector3 position, rotation, scale = new Vector3(1,-10,1) ;       // 狗初始化位置
     public string dogDisplayName;        // 狗的id指的是调用用户拥有的狗的id dogName是狗在场景中的显示名
     private DogProperty dogProperty;
     public bool loadAllDogs = false;        // 是否读取所有的狗,如果否就读取focusDog,否则读取全部狗

+ 5 - 6
Assets/Scripts/GameControllers/UserProperty.cs

@@ -17,21 +17,20 @@ public static class UserProperty
     public static string email, mobile, level;
     public static bool isRegUser = false;
     public static int advWatchTimes = 0;        // 记录用户当天一共看过几次广告
-    //public static Dictionary<string, int> foods = new();
-    //public static Dictionary<string, int> toys = new();
-    //public static Dictionary<string, int> others = new();
-    public static Dictionary<string, List<ItemStock>> itemStocks;       // 这里dict string对应的是物品大类food, toy, other
+    public static List<Item> food = new();
+    public static List<Item> toy = new();
+    public static List<Item> other = new();       // 这里dict string对应的是物品大类food, toy, other
     public static List<DogProperty> dogs = new();
 }
 
 // string id 表示具体的物品id,如food_00001
 // qty 表示数量
-public class ItemStock
+public class Item
 {
     public string id;
     public int qty;
 
-    public ItemStock(string id, int qty)
+    public Item(string id, int qty)
     {
         this.id = id;
         this.qty = qty;

+ 49 - 0
Assets/Scripts/Home/BowlColliderController.cs

@@ -0,0 +1,49 @@
+using System;
+using UnityEngine;
+
+/* Home场景中碗碰撞体检测和控制
+ * 当狗开始喝水和吃饭动作后,狗向碗移动,检测碰撞后停止移动开始喝水吃饭动作
+ * 场景中有多个狗,每次检测碰撞后反向遍历dogInScene,逐个控制移动和喝水
+ */
+
+public class BowlColliderController : MonoBehaviour
+{
+    // Start is called once before the first execution of Update after the MonoBehaviour is created
+    private GameObject bowls, bowlFood, bowlWater;
+    private GameObject thisObject;
+    void OnEnable()
+    {
+        bowls = GameObject.Find("Bowls");
+        thisObject = this.gameObject;
+        bowlFood = bowls.transform.Find("Bowl_food").gameObject;
+        bowlWater = bowls.transform.Find("Bowl_water").gameObject;
+    }
+
+    // Update is called once per frame
+    //void Update()
+    //{
+        
+    //}
+
+    private void OnTriggerEnter(Collider other)
+    {
+        foreach (var dogInScene in HomeController.dogsInScene)
+        {
+            if (dogInScene.gameObject == other.gameObject) {        // 检测哪一只doginScene发生碰撞
+                if (thisObject.name == "Bowl_water")
+                {
+                    dogInScene.isMovingToBowl = false;
+                    dogInScene.drinkStartTime = DateTime.Now;
+                    dogInScene.animator.SetTrigger("drink");
+                    dogInScene.animator.SetBool("isDrinking", true);
+                    StartCoroutine(dogInScene.DrinkAnimation());
+                    //dogInScene.DrinkAnimation();
+                }else if (thisObject.name == "Bowl_food")
+                {
+                    dogInScene.eatStartTime = DateTime.Now;
+                    dogInScene.Eat();
+                }
+            }
+        }
+    }
+}

+ 2 - 0
Assets/Scripts/Home/BowlColliderController.cs.meta

@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 78dd6ebe4f0f2524a993012b3a8857b0

+ 177 - 38
Assets/Scripts/Home/HomeController.cs

@@ -53,41 +53,48 @@ public class HomeController : MonoBehaviour
     // Update is called once per frame
     void FixedUpdate()
     {
-        if (!isInitialDone)
-        {
-           
-        }
-
-        // 随机镜头切换代码
-        RandomCameraChange();
-
-        #region 狗随机动作控制代码
+        
+        #region 场景动画主循环
         // 生成一个数据数用于随机开启动画,如果和狗的randomFactor相同就开启动画
         int randomCheck = UnityEngine.Random.Range(0, 51);
         foreach (var dog in dogsInScene)
         {
-            if (listenBreak)        // 如果用户按下说话按键,立刻切换到监听状态
+            // 如果在eat drink进程结束前不执行随机场景代码
+            if (dog.eatProgress || dog.itemConsumeProgress)
             {
-                dog.Listen();
-            }
-            else if (dog.isMoving)
-            {
-                dog.Move();
+                if (dog.isMovingToBowl)
+                {
+                    dog.MovetoBowl();
+                }
             }
-            else if (randomCheck == dog.randomFactor)        // 当狗自身的随机数和系统随机数相同时候触发。约100秒触发一次。
-            {
-                TimeSpan ts = DateTime.Now - dog.animationStartTime;
-                if (ts.Seconds >= 30)        // 如果距离上一个动作超过30秒就可以开始新的动作
+            else
+            {    // 随机动作控制控制   
+                // 随机镜头切换代码
+                RandomCameraChange();
+
+                if (listenBreak)        // 如果用户按下说话按键,立刻切换到监听状态
                 {
-                    float r = UnityEngine.Random.Range(0, 1f);
-                    if (r > 0.6)       // 随机选择开始动画,或者移动
-                    {
-                        dog.StartAnimation();
-                    }
-                    else        // 狗狗开始步行移动
+                    dog.Listen();
+                }
+                else if (dog.isMoving)
+                {
+                    dog.Move();
+                }
+                else if (randomCheck == dog.randomFactor)        // 当狗自身的随机数和系统随机数相同时候触发。约100秒触发一次。
+                {
+                    TimeSpan ts = DateTime.Now - dog.animationStartTime;
+                    if (ts.Seconds >= 30)        // 如果距离上一个动作超过30秒就可以开始新的动作
                     {
-                        dog.SetMoveSpeed(0);
-                        dog.Move();
+                        float r = UnityEngine.Random.Range(0, 1f);
+                        if (r > 0.6)       // 随机选择开始动画,或者移动
+                        {
+                            dog.StartAnimation();
+                        }
+                        else        // 狗狗开始步行移动
+                        {
+                            dog.SetMoveSpeed(0);
+                            dog.Move();
+                        }
                     }
                 }
             }
@@ -176,18 +183,27 @@ public class HomeController : MonoBehaviour
 // 本类用于管理场景中所有狗的状态包括动画状态,随机数分配等
 public class DogInScene
 {
+    //通用参数段
     public DogProperty dogProperty;
-    //public Vector3 location, rotation, scale;
-    public int randomFactor = UnityEngine.Random.Range(0, 51);        // 生成一个随机整数(0 到 50 之间),用于时间校验
-    public DateTime animationStartTime;     // 记录上一个动画开始时间的,每个动作间隔至少30秒。
-    private int activeIndex;      // 动物的活动指数
     public GameObject gameObject { set; get; }
-    private Animator animator;
+    public Animator animator;
     private Vector3 moveToLocation;
-    public bool isMoving;
-
     private float moveSpeed;     // 用来控制狗的移动速度 0 0.5跑,0.75快跑,1跳
 
+    // 喝水吃饭参数段
+    public DateTime drinkStartTime, eatStartTime;      // 记录吃喝开始时间
+    public bool itemConsumeProgress, eatProgress = false;     // 是否在吃和喝的进程中。如果是的话,跳过常规动画检测
+    public bool isMovingToBowl;
+
+    // 随机动作参数段
+    public int randomFactor = UnityEngine.Random.Range(0, 51);        // 生成一个随机整数(0 到 50 之间),用于时间校验
+    public DateTime animationStartTime;     // 记录上一个动画开始时间的,每个随机动作间隔至少30秒
+    private int activeIndex;      // 动物的活动指数
+    public bool isMoving;       // 动物正在移动,避免其他随机动作发生
+
+
+
+    #region 通用函数段
     public void SetGameObject(GameObject gameObject)
     {
         this.gameObject = gameObject;
@@ -195,13 +211,15 @@ public class DogInScene
 
     }
     
-    //public GameObject GetGameObject() { return gameObject; }
 
     public DogInScene(DogProperty property) {
         this.dogProperty = property;
         this.activeIndex = (int)Math.Round((property.liveliness + property.intimate) * UnityEngine.Random.Range(0.3f, 0.7f));
         this.isMoving = false;
     }
+    #endregion
+
+    #region 随机动作控制函数
 
     public void StartAnimation()
     {
@@ -256,7 +274,7 @@ public class DogInScene
     public void Listen()
     {
         //StopCoroutine(movingCoroutine);
-        this.animator.SetTrigger("listen");
+        //this.animator.SetTrigger("listen");
         this.animator.SetBool("isListening", true);
         this.animator.SetBool("isMoving", false) ;
         this.animator.SetBool("isBarking", false);
@@ -267,8 +285,6 @@ public class DogInScene
         HomeController.lastCameraChange = DateTime.Now;
     }
 
-
-
     // 用来出来音频返回结果
     public void PostListen(bool result)
     {
@@ -281,4 +297,127 @@ public class DogInScene
             this.animator.SetBool("isListening", false);
         }
     }
+
+    #endregion
+
+    #region 喝水,吃食等道具消费函数
+    // 开始整个使用道具的流程
+    public void StartItemConsume(ItemGroup group)
+    {
+        
+
+        GameObject bowl = new();
+        if (group == ItemGroup.water)
+        {
+            this.itemConsumeProgress = true;      // 开启整个喝水的进程
+            bowl = GameObject.Find("Bowl_water");
+        }
+        if (group == ItemGroup.food) { }        // 吃事物的过程
+        this.moveToLocation = bowl.transform.position;
+        this.isMovingToBowl = true;
+        this.animator.SetTrigger("move");       // 切换为走路动画
+        this.animator.SetBool("isMoving", true);        // 保持为走路动画
+        this.animator.SetFloat("moveSpeed", this.moveSpeed);
+    }
+
+    public void MovetoBowl()
+    {
+        // 隐藏主菜单
+        //var uiPlaceholder = GameObject.Find("UI Placeholder");
+        //var vamUI = uiPlaceholder.transform.Find("VoiceAndMenu").gameObject;
+        var vamUI = GameObject.Find("VoiceAndMenu");
+        if (vamUI != null)
+        {
+            vamUI.SetActive(false);
+        }
+        this.gameObject.transform.LookAt(moveToLocation);
+        this.gameObject.transform.position = Vector3.MoveTowards(gameObject.transform.position, moveToLocation, dogProperty.runSpeed * 0.02f * 0.01f);  // 第一个0.02对应50帧fixupdate画面,后面一个数字对应速度调整
+        //Debug.Log("current position:" + gameObject.transform.position.x + "z:" + gameObject.transform.position.z);
+
+        // 如果狗距离到达重点就停止跑步动画
+        float distance = Vector3.Distance(gameObject.transform.position, moveToLocation);
+        if (distance < 0.1)
+        {
+            this.animator.SetBool("isMoving", false);
+        }
+    }
+
+    //public IEnumerator MovetoBowl()
+    //{
+
+    //    this.gameObject.transform.LookAt(moveToLocation);
+    //    // 如果狗距离到达重点就停止跑步动画
+    //    float distance = 1000;
+    //    while (distance > 0.1)
+    //    {
+    //        distance = Vector3.Distance(gameObject.transform.position, moveToLocation);
+    //        this.gameObject.transform.position = Vector3.MoveTowards(gameObject.transform.position, moveToLocation, dogProperty.runSpeed * 0.02f * 0.01f);  // 第一个0.02对应50帧fixupdate画面,后面一个数字对应速度调整
+    //    }
+    //    this.animator.SetBool("isMoving", false);
+    //}
+
+    //public void DrinkAnimation()
+    public IEnumerator DrinkAnimation()
+
+    {
+        this.animator.SetBool("isMoving", false);       // 关闭移动动画
+        TimeSpan ts = new TimeSpan();
+        var bowlWater = GameObject.Find("Bowl_water");
+
+        // 摄像头看向水盆位置
+        HomeController.dogCam.m_LookAt = bowlWater.transform;
+        HomeController.dogCam.Priority = 10;
+        HomeController.playerCam.Priority = 1;
+
+        while (ts.TotalSeconds < 10)
+        {
+            yield return new WaitForSeconds(0.25f);
+            ts = DateTime.Now - this.drinkStartTime;
+            Debug.Log("结束饮水过程:" + ts.TotalSeconds);
+        }
+        // 播放10秒后结束饮水过程
+        this.animator.SetBool("isDrinking", false);
+        //var water = GameObject.Find("Water");
+        //water.SetActive(false);
+
+        // 再等待几秒后让水盆消失
+        while (ts.TotalSeconds < 15)
+        {
+            yield return new WaitForSeconds(0.25f);
+            ts = DateTime.Now - this.drinkStartTime;
+            Debug.Log("让水盆消失:" + ts.TotalSeconds);
+        }
+        
+        bowlWater.transform.position = new Vector3(-1, -10, -1);       // 将喝水碗回归原位
+        this.itemConsumeProgress = false;      // 关闭整个喝水的进程
+
+        QuitItemConsume();
+    }
+
+    public void Eat()
+    {
+        this.animator.SetBool("isEating", true);
+        this.animator.SetBool("isMoving", false);
+    }
+
+    private void QuitItemConsume()
+    {
+        var uiPlaceholder = GameObject.Find("UI Placeholder");
+        var vamUI = uiPlaceholder.transform.Find("VoiceAndMenu").gameObject;
+        vamUI.SetActive(true);
+
+        // 摄像头恢复玩家视角
+        HomeController.dogCam.Priority = 1;
+        HomeController.playerCam.Priority = 10;
+    }
+
+    #endregion
+        
+}
+
+// 
+public enum ItemGroup
+{
+    food,
+    water
 }

+ 9 - 11
Assets/Scripts/Home/HomeSunLight.cs

@@ -7,10 +7,7 @@ using UnityEngine.Rendering;
 public class HomeSunLight : MonoBehaviour
 {
     // Start is called before the first frame update
-    public float rotationSpeed = 30f;
-    public Transform rotateObj;
-    public Transform targetObj;
-    public Light rotateLight;
+    public Light mainLight;
     public GameObject targetCamera;
     public Material daySkybox;
     public Material nightSkybox;
@@ -23,7 +20,7 @@ public class HomeSunLight : MonoBehaviour
         //print(rotateAngle);
         if ( hour >=22 || hour < 5)     // Éîҹʱ¼ä
         {
-            rotateLight.intensity = 0.1f;
+            mainLight.intensity = 0.8f;
             //targetCamera.GetComponent<Camera>().backgroundColor = new Color(22, 42, 113, 239);
             UnityEngine.RenderSettings.skybox = nightSkybox;
             UnityEngine.RenderSettings.ambientIntensity = 0.2f;
@@ -33,7 +30,7 @@ public class HomeSunLight : MonoBehaviour
         else if (hour < 6 || hour >= 18)
         {
             // night time
-            rotateLight.intensity = 0.1f;
+            mainLight.intensity = 0.1f;
             //targetCamera.GetComponent<Camera>().backgroundColor = new Color(22, 42, 113, 239);
             UnityEngine.RenderSettings.skybox = nightSkybox;
             UnityEngine.RenderSettings.ambientIntensity = 0.2f;
@@ -45,14 +42,15 @@ public class HomeSunLight : MonoBehaviour
         {
             Debug.Log("day time");
             // day time
-            rotateLight.intensity = 0.7f;
+            mainLight.intensity = 0.7f;
             //targetCamera.GetComponent<Camera>().clearFlags = CameraClearFlags.SolidColor;
             //targetCamera.GetComponent<Camera>().backgroundColor = new Color(139, 202, 255, 203);
+            UnityEngine.RenderSettings.ambientMode = AmbientMode.Flat;
+            UnityEngine.RenderSettings.ambientLight = new Color32(200,200,200,180);
             UnityEngine.RenderSettings.skybox = daySkybox;
-            UnityEngine.RenderSettings.ambientIntensity = 0.9f;
-            UnityEngine.RenderSettings.reflectionIntensity = 1f;
-            homeLight.GetComponent<Light>().intensity = 1f;
-            rotateObj.RotateAround(targetObj.transform.position, Vector3.forward, rotateAngle);
+            UnityEngine.RenderSettings.ambientIntensity = 1f;
+            UnityEngine.RenderSettings.reflectionIntensity = 0.5f;
+            homeLight.GetComponent<Light>().intensity = 0.9f;
         }
         DynamicGI.UpdateEnvironment();
     }

+ 1 - 1
Assets/Scripts/Playground/PlayToyController.cs

@@ -163,7 +163,7 @@ public class PlayToyController : MonoBehaviour
             // 平滑旋转到目标方向
             //dog.transform.rotation = Quaternion.RotateTowards(dog.transform.rotation, targetRotation, turnSpeed * Time.deltaTime);
 
-            float dogSpeed = dogProperty.runSpeed/10;   // 狗向飞盘移动
+            float dogSpeed = (100+dogProperty.runSpeed)/20;   // 狗向飞盘移动
             dog.transform.position = Vector3.MoveTowards(dog.transform.position, targetPosition, dogSpeed * Time.deltaTime);
 
             // 狗切换到跑步状态

+ 8 - 5
Assets/Texture/Materials/White.mat

@@ -11,7 +11,9 @@ Material:
   m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
   m_Parent: {fileID: 0}
   m_ModifiedSerializedProperties: 0
-  m_ValidKeywords: []
+  m_ValidKeywords:
+  - _GLOSSYREFLECTIONS_OFF
+  - _SPECULARHIGHLIGHTS_OFF
   m_InvalidKeywords: []
   m_LightmapFlags: 4
   m_EnableInstancingVariants: 0
@@ -66,14 +68,14 @@ Material:
     - _DetailNormalMapScale: 1
     - _DstBlend: 0
     - _GlossMapScale: 1
-    - _Glossiness: 0.5
-    - _GlossyReflections: 1
-    - _Metallic: 0
+    - _Glossiness: 0.2
+    - _GlossyReflections: 0
+    - _Metallic: 0.2
     - _Mode: 0
     - _OcclusionStrength: 1
     - _Parallax: 0.02
     - _SmoothnessTextureChannel: 0
-    - _SpecularHighlights: 1
+    - _SpecularHighlights: 0
     - _SrcBlend: 1
     - _UVSec: 0
     - _ZWrite: 1
@@ -81,3 +83,4 @@ Material:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
     - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1

+ 4 - 2
Assets/Texture/Materials/wood.mat

@@ -11,7 +11,8 @@ Material:
   m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
   m_Parent: {fileID: 0}
   m_ModifiedSerializedProperties: 0
-  m_ValidKeywords: []
+  m_ValidKeywords:
+  - _GLOSSYREFLECTIONS_OFF
   m_InvalidKeywords: []
   m_LightmapFlags: 4
   m_EnableInstancingVariants: 0
@@ -67,7 +68,7 @@ Material:
     - _DstBlend: 0
     - _GlossMapScale: 1
     - _Glossiness: 0
-    - _GlossyReflections: 1
+    - _GlossyReflections: 0
     - _Metallic: 0
     - _Mode: 0
     - _OcclusionStrength: 1
@@ -81,3 +82,4 @@ Material:
     - _Color: {r: 1, g: 1, b: 1, a: 1}
     - _EmissionColor: {r: 0.26415095, g: 0.09344963, b: 0.09344963, a: 1}
   m_BuildTextureStacks: []
+  m_AllowLocking: 1