Метод ClipsSwapAreaElement должен иметь возвращаемый тип. ⇐ C#
-
Anonymous
Метод ClipsSwapAreaElement должен иметь возвращаемый тип.
Привет, я пытался решить эту проблему, которую мне дал автор модели, хотя я ничего не знаю о кодировании Unity. Не могли бы вы помочь мне справиться с этим? Говорит, что метод ClipsSwapAreaElement должен иметь возвращаемый тип, и не знаю, есть ли что-то в ClipSwapItem.
Открытый класс ClipSwapAreaElement: VisualElement { общественное действие OnClose {получить; набор;
частный список _animationsToSwap; общедоступный ClipSwapItem (слой VrcAnimationLayer) { новая метка («Режим смены анимаций») .WithClass("заголовок") .ChildOf(это); new Label("НЕ изменяйте аниматор во время обмена анимациями с менеджером, чтобы избежать проблем.") .WithClass("предупреждающая метка", "контейнер с границей") .WithFontSize(10) .ChildOf(это); _animationsToSwap = новый список(); если (layer.Controller!= ноль) { foreach (var animatorLayer в Layer.Controller.layers) { var clips = animatorLayer.GetClipsToSwap().ToList(); _animationsToSwap.AddRange(клипы); вар контейнер = новый VisualElement() .WithClass("контейнер с границей") .ChildOf(это); новая метка (animatorLayer.name) .WithClass("маленький заголовок") .ChildOf(контейнер); вар clipsContainer = новый VisualElement() .WithClass("контейнер клипов") .ChildOf(контейнер); foreach (клип ClipSwapItem в клипах) { если (клип.IsTree) { void MakeTree (ClipSwapItem clipSwapItem, родительский объект VisualElement) { varfoldout = новый Foldout().ChildOf(parentObject); foldout.text = clipSwapItem.Name; foreach (дочерний элемент var в clipSwapItem.TreeChildren) { если (ребенок.IsTree) { MakeTree(дочерний, складной); } еще { Элемент ObjectField = FluentUIElements.NewObjectField(child.Name, typeof(AnimationClip), child.Clip) .ChildOf(раскладной); item.RegisterValueChangedCallback(x => { child.Clip = x.newValue как AnimationClip; }); } } } MakeTree (клип, клипсКонтейнер); } еще { Элемент ObjectField = FluentUIElements.NewObjectField(clip.Name, typeof(AnimationClip), clip.Clip) .ChildOf(clipsContainer); item.RegisterValueChangedCallback(x => { clip.Clip = x.newValue как AnimationClip; }); } } } } вар OperationsArea = новый VisualElement() .WithClass("верхнее расстояние") .WithFlexDirection(FlexDirection.Row) .ChildOf(это); вар mergeOnCurrent = FluentUIElements .NewButton("Применить к текущему", "Применить изменения к этому контроллеру") .WithClass("контроль роста") .ChildOf(operationsArea); вар mergeOnNew = FluentUIElements .NewButton("Применить к новой", "Применить изменения к новой копии контроллера и применить их к аватару") .WithClass("контроль роста") .ChildOf(operationsArea); вар cancelButton = FluentUIElements .NewButton("Отмена", "Отменить операцию") .WithClass("контроль роста") .ChildOf(operationsArea); cancelButton.clicked += () => OnClose?.Invoke(); mergeOnCurrent.clicked += () => { Layer.SetController(layer.Controller.SwapAnimations(_animationsToSwap)); ПриЗакрытии?.Invoke(); }; mergeOnNew.clicked += () => { Layer.SetController(layer.Controller.SwapAnimations(_animationsToSwap, true)); ПриЗакрытии?.Invoke(); }; } }
Привет, я пытался решить эту проблему, которую мне дал автор модели, хотя я ничего не знаю о кодировании Unity. Не могли бы вы помочь мне справиться с этим? Говорит, что метод ClipsSwapAreaElement должен иметь возвращаемый тип, и не знаю, есть ли что-то в ClipSwapItem.
Открытый класс ClipSwapAreaElement: VisualElement { общественное действие OnClose {получить; набор;
частный список _animationsToSwap; общедоступный ClipSwapItem (слой VrcAnimationLayer) { новая метка («Режим смены анимаций») .WithClass("заголовок") .ChildOf(это); new Label("НЕ изменяйте аниматор во время обмена анимациями с менеджером, чтобы избежать проблем.") .WithClass("предупреждающая метка", "контейнер с границей") .WithFontSize(10) .ChildOf(это); _animationsToSwap = новый список(); если (layer.Controller!= ноль) { foreach (var animatorLayer в Layer.Controller.layers) { var clips = animatorLayer.GetClipsToSwap().ToList(); _animationsToSwap.AddRange(клипы); вар контейнер = новый VisualElement() .WithClass("контейнер с границей") .ChildOf(это); новая метка (animatorLayer.name) .WithClass("маленький заголовок") .ChildOf(контейнер); вар clipsContainer = новый VisualElement() .WithClass("контейнер клипов") .ChildOf(контейнер); foreach (клип ClipSwapItem в клипах) { если (клип.IsTree) { void MakeTree (ClipSwapItem clipSwapItem, родительский объект VisualElement) { varfoldout = новый Foldout().ChildOf(parentObject); foldout.text = clipSwapItem.Name; foreach (дочерний элемент var в clipSwapItem.TreeChildren) { если (ребенок.IsTree) { MakeTree(дочерний, складной); } еще { Элемент ObjectField = FluentUIElements.NewObjectField(child.Name, typeof(AnimationClip), child.Clip) .ChildOf(раскладной); item.RegisterValueChangedCallback(x => { child.Clip = x.newValue как AnimationClip; }); } } } MakeTree (клип, клипсКонтейнер); } еще { Элемент ObjectField = FluentUIElements.NewObjectField(clip.Name, typeof(AnimationClip), clip.Clip) .ChildOf(clipsContainer); item.RegisterValueChangedCallback(x => { clip.Clip = x.newValue как AnimationClip; }); } } } } вар OperationsArea = новый VisualElement() .WithClass("верхнее расстояние") .WithFlexDirection(FlexDirection.Row) .ChildOf(это); вар mergeOnCurrent = FluentUIElements .NewButton("Применить к текущему", "Применить изменения к этому контроллеру") .WithClass("контроль роста") .ChildOf(operationsArea); вар mergeOnNew = FluentUIElements .NewButton("Применить к новой", "Применить изменения к новой копии контроллера и применить их к аватару") .WithClass("контроль роста") .ChildOf(operationsArea); вар cancelButton = FluentUIElements .NewButton("Отмена", "Отменить операцию") .WithClass("контроль роста") .ChildOf(operationsArea); cancelButton.clicked += () => OnClose?.Invoke(); mergeOnCurrent.clicked += () => { Layer.SetController(layer.Controller.SwapAnimations(_animationsToSwap)); ПриЗакрытии?.Invoke(); }; mergeOnNew.clicked += () => { Layer.SetController(layer.Controller.SwapAnimations(_animationsToSwap, true)); ПриЗакрытии?.Invoke(); }; } }
Мобильная версия