拖拽模型旋转
添加窗口脚本
创建UI_CreateCharacterWindow脚本并挂载到窗口中,使用属性结合框架的GameSetting完成对窗口的初始化,详细可见框架UI部分内容,注意AA内Group名和包名与资源一致。
[UIElement(false,"UI_CreateCharacterWindow",2)]
监听模型拖拽区域
对于Image,首先不能像Button直接Onclick添加事件响应,需要在Image组件上挂载一个脚本进行事件监听注册和管理,可以通过框架中的事件工具直接在此脚本内完成功能(相当于给所有组件都提供了直接添加事件监听响应的功能)。
// 模型交互Image
[SerializeField] Image modelTouchImage;
public override void Init()
{
//使用事件工具添加监听
modelTouchImage.OnDrag(ModelTouchImageDrag, 6);
}
private void ModelTouchImageDrag(PointerEventData eventData,object[] arg2)
{
print(eventData.position);
}
private void Start()
{
Init();
}
为需要拖拽的区域添加事件监听和对应的事件响应(测试输出鼠标位置)。
角色旋转
通过角色控制器单例拿到模型的transform根据鼠标偏移量进行对应的旋转即可。
public override void Init()
{
modelTouchImage.OnDrag(ModelTouchImageDrag, 6);
//绑定角色预览
characterPreviewTransform =Player_Controller.Instance.transform;
}
//最后一次坐标
float lastPosX = 0;
private void ModelTouchImageDrag(PointerEventData eventData,object[] arg2)
{
float offset = eventData.position.x - lastPosX;
lastPosX = eventData.position.x;
characterPreviewTransform.Rotate(new Vector3(0, -offset * Time.deltaTime * 60f, 0));
}