ZUIMODPanel.lua.txt 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. local ZUIMODPanel = {}
  2. local function OnBlendSliderValueChange(skinnedMeshCom, nBlendShapeIndex, nValue)
  3. skinnedMeshCom:SetBlendShapeWeight(nBlendShapeIndex, nValue * 100)
  4. end
  5. local function GetAllBalndShapes()
  6. local boyObject = CS.UnityEngine.GameObject.Find("Boy").gameObject
  7. local tSkinnedMeshCom = boyObject.transform:GetComponentsInChildren(typeof(CS.UnityEngine.SkinnedMeshRenderer))
  8. local prefabSliderItem = LoadResource("Prefabs/UI/MODSliderItem.prefab")
  9. local scrollViewCon = ZUIMODPanel.rootPanel.transform:Find("ScrollView/Viewport/Content").gameObject
  10. for nSkinnedMeshIndex = 0, tSkinnedMeshCom.Length - 1, 1 do
  11. local sharedMesh = tSkinnedMeshCom[nSkinnedMeshIndex].sharedMesh
  12. for nBlendShapeIndex = 0, sharedMesh.blendShapeCount - 1, 1 do
  13. local szBlendShapeName = sharedMesh:GetBlendShapeName(nBlendShapeIndex)
  14. local sliderItem = CS.UnityEngine.GameObject.Instantiate(prefabSliderItem, scrollViewCon.transform)
  15. local slider = sliderItem.transform:Find("Slider").gameObject
  16. -- 读取blendShapeName作为每个blendShape的标题(后续可修改)
  17. local sliderItemTextCom = sliderItem.transform:Find("Text"):GetComponent("Text")
  18. sliderItemTextCom.text = szBlendShapeName
  19. -- slider添加监听事件
  20. local sliderCom = slider.transform:GetComponent("Slider")
  21. sliderCom.onValueChanged:AddListener(function (nValue)
  22. OnBlendSliderValueChange(tSkinnedMeshCom[nSkinnedMeshIndex], nBlendShapeIndex, nValue)
  23. end)
  24. end
  25. end
  26. end
  27. function ZUIMODPanel.Awake(luaRoot)
  28. ZUIMODPanel._luaRoot = luaRoot
  29. local canvas = CS.UnityEngine.GameObject.Find("Canvas")
  30. ZUIMODPanel._rootCanvas = canvas
  31. local prefabMOD = LoadResource("Prefabs/UI/ZUIMODPanel.prefab")
  32. local rootPanel = CS.UnityEngine.GameObject.Instantiate(prefabMOD, canvas.transform)
  33. ZUIMODPanel.rootPanel = rootPanel
  34. end
  35. function ZUIMODPanel.Start()
  36. GetAllBalndShapes()
  37. end
  38. function ZUIMODPanel.OnDestroy()
  39. CS.UnityEngine.GameObject.Destroy(ZUIMODPanel.rootPanel)
  40. end
  41. return ZUIMODPanel