欢迎来到淼淼之森的博客小站。  交流请加我微信好友: studyjava。  也欢迎关注同名公众号:Java学习之道

unity实战之linerrender自定义绘画

  |   0 评论   |   0 浏览

unity实战之使用LineRenderer自定义画线
由于画板ui是在Canvas层,而LineRenderer画线是在世界空间中。如果按照层级显示,先渲染场景LineRenderer层,再渲染UI层,会导致画线被ui挡住。
为了让LineRenderer显示在UI层上方,我们考虑使用双摄像机来处理。简而言之就是为LineRenderer单独安排一个摄像机用于专门去渲染Line Renderer。

ui

1.创建Camera,命名为LineCamera,调整参数如下:
Clear Flags:Depth only
Projection:Orthographic
其他参数根据实际情况调整。
1.png

2.创建Line Renderer,命名为Liner。
2.png

3.新建一个多边形碰撞器Ploygon Collider 2D,命名为bg,调节碰撞区域。并为其添加Line Renderer Ctrl脚本,并为其MapCamera,go赋值如下:
MapCamera:LineCamera
go:Liner
3.png

4.创建绘画拖尾效果,使用拖尾特效UI_tuowei_10,挂载在bg下。
4.png

代码

local view = baseview:new("test2")
local base = view
local ui = nil

function view:start()
model = base.model
ui = base.group

ui = {}
ui.camera = utils.loadinstobj("hero","LineCamera",Layer.MapRoot)
ui.camera.transform.position = Vector3.zero
ui.Liner = utils.findobj(ui.camera,"Liner")
ui.bg = utils.findobj(ui.camera,"bg")
ui.line_ctrl = ui.bg:GetComponent("LineRendererCtrl")

ui.tuowei = utils.findobj(ui.camera,"bg/UI_tuowei_10")
ui.line_ctrl.onComplet = base.on_draw_complet
ui.line_ctrl.onDrag = base.draw_onDrag

end

function base:commit()
ui.Liner:SetActive(true)
ui.line_ctrl:Ready()
base.RefreshUI()
end

function base.RefreshUI()
end

function base.draw_onDrag(go,v3)
--绘画拖尾效果
ui.tuowei:SetActive(true)
ui.tuowei.transform.localPosition = v3
end

function base.on_draw_complet()
ui.tuowei:SetActive(false)
ui.line_ctrl:ScaleDrawing(0,0.25)
-- --画完之后隐藏绘画
-- ui.Liner:SetActive(false)

ui.line_ctrl:Ready()

end

function view:destroy()
ui = nil
renders = {}
build_list = {}
build_data = nil
end

return view


标题:unity实战之linerrender自定义绘画
作者:shirlnGame
地址:https://www.mmzsblog.cn/articles/2024/03/26/1711435501984.html

如未加特殊说明,文章均为原创,转载必须注明出处。均采用CC BY-SA 4.0 协议

本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。若本站转载文章遗漏了原文链接,请及时告知,我们将做删除处理!文章观点不代表本网站立场,如需处理请联系首页客服。
• 网站转载须在文章起始位置标注作者及原文连接,否则保留追究法律责任的权利。
• 公众号转载请联系网站首页的微信号申请白名单!

个人微信公众号 ↓↓↓                 

微信搜一搜爱上游戏开发