Unity结合SLua框架基本使用Demo

SLua初学(一) SLua 插件信息 1、插件网站:http://www.slua.net/ 2、插件GitHub:https://github.com/pangweiwei/slua/wiki 安装 下载最新版,这里, 解压缩,将Assets目录里的所有内容复制到你的工程中,对于最终产品,可以删除Resourece,例子,文档等内容,只保留Plugins目录,如果是开发阶段则无所谓。 等待unity编译完毕,如果... 阅读详情

SLua框架安装

1.https://github.com/pangweiwei/slua/wiki下载最新版,将Assets目录里的所有内容复制到工程中,对于最终产品,可以删除例子,文档等内容,如果是开发阶段则无所谓。

2.等待unity编译完毕,如果一切顺利的话,将出现SLua菜单,点击SLua菜单中All->Make命令,手动生成针对当前版本的U3d接口文件。

3.每次更新SLua版本,务必记得All->Clear,然后All->Make,否则可能运行不正确。

效果:
在这里插入图片描述

C#代码如下:

using UnityEngine;
using System.IO;
using SLua;
using UnityEngine.UI;




//public delegate byte[] LuaReourcesFileLoader(string fn, ref string absoluteFn);
public class LoadLua : MonoBehaviour
{   

    LuaSvr svr;
    LuaTable self;
    LuaFunction update;

    [CustomLuaClass]
    public delegate void UpdateDelegate(object self);
    UpdateDelegate ud;
   
    void Start()
    {
       
        svr = new LuaSvr();
        LuaSvr.mainState.loaderDelegate += LuaFileLoader;
        svr.init(null, () => // 如果不用init方法初始化的话,在Lua中是不能import的
        {   
            
            // 这里为了测试就不先判断为空,开发的时候再加上
            self = (LuaTable)svr.start( Application.streamingAssetsPath + "/Lua/SLuaTest.txt");

            update = (LuaFunction)self["update"];
            ud = update.cast<UpdateDelegate>();
            
          
        });
        
    }
    //public float i=0.01f;
    //public Color color_ = new Color(0, 1, 1);
    void Update()
    {    
        //RGB颜色渐变效果
        //Color(0,1,1)
        //-G +R -B +G -R +B
        //if (color_.r == 0 && color_.g > 0 && color_.b == 1)
        //{
        //    color_.g -= i;
        //    if (color_.g<0) {
        //        color_.g = 0;
        //    }
        //}
        //else if (color_.g == 0 && color_.r < 1 && color_.b == 1)
        //{
        //    color_.r += i;
        //    if (color_.r > 1)
        //    {
        //        color_.r = 1;
        //    }
        //}
        //else if (color_.r == 1 && color_.g == 0 && color_.b > 0)
        //{
        //    color_.b -= i;
        //    if (color_.b < 0)
        //    {
        //        color_.b = 0;
        //    }
        //}
        //else if (color_.b == 0 && color_.r == 1 && color_.g < 1)
        //{
        //    color_.g += i;
        //    if (color_.g > 1)
        //    {
        //        color_.g = 1;
        //    }
        //}
        //else if (color_.r > 0 && color_.g == 1 && color_.b == 0)
        //{
        //    color_.r -= i;
        //    if (color_.r < 0)
        //    {
        //        color_.r = 0;
        //    }
        //}
        //else if (color_.r == 0 && color_.g == 1 && color_.b < 1)
        //{
        //    color_.b += i;
        //    if (color_.b > 1)
        //    {
        //        color_.b = 1;
        //    }
        //}
     
        //A.transform.GetComponent<Renderer>().material.color = color_;
        if (ud != null) ud(self);
    }

    private static byte[] LuaFileLoader(string strFile, ref string fn)
    {
        
        string filename =  strFile;
        return File.ReadAllBytes(filename);
    }
    public  Sprite ResourcesSprite(string path)
    {

        return Resources.Load<Sprite>(path);
    }
}
   


Lua代码如下:

--lua代码文件名称:SLuaTest.txt
import "UnityEngine"
import "UnityEngine.UI"


local class={}
IsRunning=true;

function main()  --程序启动自动调用该方法 类似Unity中的Start方法
   cs = GameObject.Find("LoadLuaManager") --Lua调用CS代码
   


   camera=Camera.main
   camera.clearFlags = CameraClearFlags.SolidColor
   camera.backgroundColor = Color.black
   print("Lua创建了一个Cube")
   cube = GameObject.CreatePrimitive(PrimitiveType.Cube)
   cube:AddComponent(UnityEngine.AudioSource).clip=Resources.Load("One Last Kiss(Instrumental)")
   cube.transform:GetComponent(AudioSource).loop = true
   cube.transform:GetComponent(AudioSource):Play()
   --cube.transform:GetComponent(Renderer).material=Resources.Load("Material") 从Resources获取材质球的方法
   cube.transform:GetComponent(Renderer).material.color=Color.red; --直接设置材质的颜色
   cube.transform.localPosition =Vector3(0, 1, -5)
   
   MainTransform =  GameObject.Find("Canvas/MainPlant").transform
  
   GameObject.Instantiate(Resources.Load("Button"),Vector3(960, 1000, 0),Quaternion.identity,MainTransform).name="Button1" 
   But=GameObject.Find("Canvas/MainPlant/Button1")
   But.transform.localScale= Vector3(2, 2, 2);

   GameObject.Find("Canvas/MainPlant/Button1/Text"):GetComponent(UI.Text).text="切换画面填充模式"
 
   GameObject.Instantiate(Resources.Load("Button"),Vector3(1250, 1000, 0),Quaternion.identity,MainTransform).name="Button2" 
   But2=GameObject.Find("Canvas/MainPlant/Button2")
   But2.transform.localScale= Vector3(1.5, 1.5, 1.5);

   GameObject.Find("Canvas/MainPlant/Button2/Text"):GetComponent(UI.Text).text="切换颜色"


   GameObject.Instantiate(Resources.Load("Button"),Vector3(360, 700, 0),Quaternion.identity,MainTransform).name="Button3" 
   But3=GameObject.Find("Canvas/MainPlant/Button3")
   But3.transform.localScale= Vector3(2, 2, 2);
   GameObject.Destroy( GameObject.Find("Canvas/MainPlant/Button3/Text"))   --在Lua中如何删除物体
   But3:GetComponent(RectTransform).sizeDelta=Vector2(60,60);
    
  
   But3:GetComponent(UI.Image).sprite= cs:GetComponent("LoadLua"):ResourcesSprite("播放")
 
  But:GetComponent(Button).onClick:AddListener(function ()
      print("Lua中的Button监听事件触发");
      if( camera.clearFlags==CameraClearFlags.SolidColor)
      then
             But2.transform.localScale= Vector3(1.5, 1.5, 1.5);
            camera.clearFlags =CameraClearFlags.Skybox
            
      elseif(camera.clearFlags==CameraClearFlags.Skybox)
      then
           But2.transform.localScale= Vector3(0,0,0);
          camera.clearFlags =CameraClearFlags.Nothing
        
      elseif(camera.clearFlags==CameraClearFlags.Nothing)
      then
           But2.transform.localScale= Vector3(0,0,0);
          camera.clearFlags =CameraClearFlags.Depth
        
      elseif(camera.clearFlags==CameraClearFlags.Depth)
      then
           But2.transform.localScale= Vector3(1.5, 1.5, 1.5);
          camera.clearFlags=CameraClearFlags.SolidColor
        
      end

   end);

   But2:GetComponent(Button).onClick:AddListener(function ()
        if(camera.backgroundColor == Color.black)
        then
            camera.backgroundColor =Color.white
        elseif(camera.backgroundColor==Color.white)
        then
            camera.backgroundColor = Color.blue
        elseif(camera.backgroundColor==Color.blue)
        then
            camera.backgroundColor = Color.red
        elseif(camera.backgroundColor==Color.red)
        then
            camera.backgroundColor = Color.green
        elseif(camera.backgroundColor==Color.green)
        then
            camera.backgroundColor =Color(1,1,0)
        elseif(camera.backgroundColor==Color(1,1,0))
        then
            camera.backgroundColor = Color.clear
        elseif(camera.backgroundColor==Color.clear)
        then 
            camera.backgroundColor = Color.cyan
        elseif(camera.backgroundColor==Color.cyan)
        then
            camera.backgroundColor = Color(0.5,0.5,0.5)
        elseif(camera.backgroundColor==Color(0.5,0.5,0.5))
        then
            camera.backgroundColor = Color.magenta
        elseif(camera.backgroundColor==Color.magenta)
        then
            camera.backgroundColor = Color.black
        end
        --Color.white  Color.clear  Color.cyan Color.red Color.green Color.gray Color.grey Color.magenta Color.yellow
   end);

   But3:GetComponent(Button).onClick:AddListener(function ()
     if(cube.transform:GetComponent(AudioSource).isPlaying)
     then             
           cube.transform:GetComponent(AudioSource):Pause()
            But3:GetComponent(UI.Image).sprite= cs:GetComponent("LoadLua"):ResourcesSprite("暂停")
            IsRunning=false
     else
           cube.transform:GetComponent(AudioSource):Play()    
             But3:GetComponent(UI.Image).sprite= cs:GetComponent("LoadLua"):ResourcesSprite("播放")
            IsRunning=true
     end
     end);


   Text =  GameObject.Instantiate(Resources.Load("Text"),Vector3(1600, 650, 0),Quaternion.identity,MainTransform)
   Text:GetComponent(UI.Text).color = Color.white;
   Text:GetComponent(UI.Text).fontSize = 35;
 
   Text:GetComponent(RectTransform).sizeDelta=Vector2(600,300);
	


   Text1 =  GameObject.Instantiate(Resources.Load("Text"),Vector3(1600, 450, 0),Quaternion.identity,MainTransform)
   Text1:GetComponent(UI.Text).color = Color.white;
   Text1:GetComponent(UI.Text).fontSize = 35;
   Text1:GetComponent(RectTransform).sizeDelta=Vector2(600,300);


   Text2 =  GameObject.Instantiate(Resources.Load("Text"),Vector3(1600, 250, 0),Quaternion.identity,MainTransform)
   Text2:GetComponent(UI.Text).color = Color.white;
   Text2:GetComponent(UI.Text).fontSize = 35;
   Text2:GetComponent(RectTransform).sizeDelta=Vector2(600,300);


   Text3 =  GameObject.Instantiate(Resources.Load("Text"),Vector3(600, 800, 0),Quaternion.identity,MainTransform)
   Text3:GetComponent(UI.Text).color = Color.white;
   Text3:GetComponent(UI.Text).fontSize = 35;
   Text3:GetComponent(RectTransform).sizeDelta=Vector2(600,100);


   Slider_= GameObject.Instantiate(Resources.Load("Slider"),Vector3(960, 100, 0),Quaternion.identity,MainTransform)
   Slider_.transform.localScale= Vector3(2, 2, 2);
   Slider_:GetComponent(UI.Slider).value=1;
   Slider_:GetComponent(UI.Slider).onValueChanged:AddListener(
		function(v)
		    cube.transform.localScale= Vector3(v, v, v);
            cube.transform:GetComponent(AudioSource).volume=v
		end
	)




    
    --if you want to use update function,you need return class
	--如果你想去使用Update函数,你需要在main方法返回class
	return class
 

end
ColorTimeSpeed=0.001
color_ =Color(0,1,1)
minute_=60
function  class:update() --Lua中使用update 需要继承在Main 返回的Class
  --print("Lua Update 正在执行...")
 if (IsRunning)
  then
  cube.transform.localRotation= Quaternion.Euler(45,45,math.sin(Time.time)*180)

    if (color_.r == 0 and color_.g > 0 and color_.b == 1)
    then
            color_.g =color_.g - ColorTimeSpeed
            if (color_.g<0)
            then
                color_.g = 0
            end

    elseif (color_.g == 0 and color_.r < 1 and color_.b == 1)
    then
            color_.r =color_.r + ColorTimeSpeed
            if (color_.r > 1)
            then
                color_.r = 1
            end

    elseif (color_.r == 1 and color_.g == 0 and color_.b > 0)
    then
            color_.b =color_.b - ColorTimeSpeed
            if (color_.b < 0)
            then
                color_.b = 0
            end

    elseif (color_.b == 0 and color_.r == 1 and color_.g < 1)
    then
            color_.g =color_.g + ColorTimeSpeed
            if (color_.g > 1)
            then
                color_.g = 1
            end

    elseif (color_.r > 0 and color_.g == 1 and color_.b == 0)
    then
            color_.r = color_.r - ColorTimeSpeed
            if (color_.r < 0)
            then
                color_.r = 0
            end

    elseif (color_.r == 0 and color_.g == 1 and color_.b < 1)
    then
            color_.b =color_.b + ColorTimeSpeed
            if (color_.b > 1)
            then
                color_.b = 1
            end
    end
	 
      cube.transform:GetComponent(Renderer).material.color= color_
      Text:GetComponent(UI.Text).text= "<color=red>COLOR:</color>\nR:"..color_.r.."\nG:"..color_.g.."\nB:"..color_.b
      Text1:GetComponent(UI.Text).text= "<color=red>ROTATION:</color>\nx:"..cube.transform.localRotation.x.."\ny:"..cube.transform.localRotation.y.."\nz:"..cube.transform.localRotation.z
      Text2:GetComponent(UI.Text).text= "<color=red>SCALE:</color>\nx:"..cube.transform.localScale.x.."\ny:"..cube.transform.localScale.y.."\nz:"..cube.transform.localScale.z
  
     if(cube.transform:GetComponent(AudioSource).isPlaying)
     then
        Text3:GetComponent(UI.Text).text="<color=red>MUSIC TIME:</color>\n"..cube.transform:GetComponent(AudioSource).time / minute_.."/"..cube.transform:GetComponent(AudioSource).clip.length / minute_
     
     end

  
  
  
  
  end
end

从零开始的SLua(一)——热更新原理及SLua的第一个Demo剖析 换工作后改做手游需要使用Lua来进行热更新,以前也没接触过Lua,这篇博客算是记录一些学习心得和资料 写这篇博客是接触Lua的第三天,有错误的地方还请大神们指正,Lua语法之类的就不提了,我们从热更新的原理机制开始: 什么是热更新? 为什么要使用Lua进行热更新? Unity是如何使用Lua进行热更新的? 知乎这个问题的觉得下面已经给出了不少解释,其中一个回答又很好的解释了为什么Unit... 阅读详情

相关推荐

基于Slua的 Lua NGUI UI框架

lua中的内容这里主要有两个模块 : 1.层级管理模块 在层级上将界面分为几种类型,这里暂时先定三种常用的类型 LayerType = { --值越大层级越高 LayerType_normal = 1, --一般界面,全屏且不能操作下层界面 LayerType_fixedWindow = 2,--固定窗口 不能自行关闭和打开的窗口 比如 游戏资源的显示 LayerTy...

zrwj的博客 782

SLua入门学习(一)——热更新原理及SLua的Demo剖析

很多地方都需要使用Lua来进行热更新,这个系列主要是给大家介绍SLua入门学习,对于Lua语法这里就不多说了,先从热更新的原理机制开始给大家进行介绍。 什么是热更新? 为什么要使用Lua进行热更新? Unity是如何使用Lua进行热更新的? 至此,前两个问题的理解如下: 1、作为 Unity 游戏来说,热更新即在游戏运行的过程中,编译并运行修改后的新代码 2、因为Ios 通...

luozhihua_as的专栏 5669

KSFramework:Unity3D开发框架快速入门

KSFramework是一个Unity 5 Asset Bundle开发框架和工具集,专注于运行时热重载,使用了SLua作为脚本引擎。 https://github.com/mr-kelly/KSFramework KSFramework是一个整合KEngine、SLua和一些开发组件组成的全功能Unity 5开发框架,适合有一定规模的团队使用。热重载是KSFramework的开发重点——在不

kellyblog 1758

探秘高效Unity开发神器:SLua

**SLua** 是一个针对Unity3D和Mono的快速静态代码生成的 Lua 绑定库,让开发者在C#和Lua之间无缝切换,极大地提高了游戏开发效率。通过它的强大功能,你可以轻松地在Unity中使用Lua脚本,并享受到其静态编译带来的性能优势。 ## 项目介绍 SLua的核心特性在于它的静态代码生成机制,这意味着它不依赖反射,避免了额外的垃圾回收,从而实现快速运行。此外,SLua还提供了远程...

gitblog_00015的博客 694

Unity热更新必选Lua:轻量、可控、双端兼容的工程实践

Lua是一种轻量级嵌入式脚本语言,凭借纯C实现、无GC停顿、模块化加载(require)等特性,成为Unity热更新场景中兼顾iOS/Android双端兼容性与毫秒级加载效率的核心选择。其原理在于绕过Unity对C#运行时编译的限制,通过原生C接口直接桥接C#对象内存布局,避免反射与AOT裁剪风险,显著提升热更稳定性与调试可见性。技术价值体现在细粒度热更(单函数级替换)、零发版上线、防逆向流式加载等工程刚需;典型应用于UI逻辑、战斗规则、活动配置等高频迭代模块。本文聚焦slua-unity落地实践,覆盖环境

weixin_30307921的博客 637

Unity中集成LUA脚本的完整DEMO实践

SLua是一个高效的C#与Lua脚本语言互操作的解决方案。它允许游戏开发者在Unity项目中直接使用Lua语言编写游戏逻辑,并且与C#代码交互。使用SLua的优势主要体现在以下几个方面:性能优化:SLua针对Lua在Unity中的运行进行了优化,尤其是在性能方面,它尽量减少了C#和Lua之间的调用开销。跨平台支持:SLua支持主流的Unity平台,包括Windows、Mac、iOS、Android和WebGL等。社区支持。

weixin_35045970的博客 644

探索SLUA Unreal Demo:Unity与Unreal Engine之间的桥梁

探索SLUA Unreal Demo:Unity与Unreal Engine之间的桥梁 项目简介 在游戏开发的世界中,跨引擎交互是一个极具挑战性的任务。 是一个开源项目,旨在简化Unity和Unreal Engine之间数据和逻辑的通信。它基于SLUA库,提供了一种高效、便捷的方法,让开发者能够利用Unity进行快速迭代,然后在Unreal Engine中实现高质量的渲染和物理模拟。 技术分析 S...

gitblog_00078的博客 595

complier lab2

只需支持定义 main 函数即可不带参数 int main(){...}带参数 int main(int argc, int argv){...}

qq_43581843的博客 904

SLua About

Slua的学习文档: 1.Slua使用说明 2.Lua原表 3.Lua数据结构和函数标准库 4.Slua原理Demo刨析说明 SLua结合项目演练 程序启动入口 public class GameMain : MonoBehaviour { LuaSvr Svr; LuaTable lua_Main; LuaFunction lua_OnDestr...

一入編程深似海! 563

一条龙开发指南:MCP AI Agent 理论+项目实战开发你的MCP Server

MCP(Model Connection Protocol)是Anthropic于2024年推出的AI模型连接协议,旨在为AI模型提供开放、通用的标准化接口,类似于“USB-C”接口,使AI模型能够无缝连接各种数据源和工具。MCP通过标准化协议解决了AI系统集成中的碎片化问题,提升了开发效率和系统可靠性。开发者可以通过简单的配置,快速接入不同的MCP Server,实现AI模型的多样化应用。MCP支持多种协议,如Stdio、SSE等,并通过JSON-RPC格式进行数据传输。文章还以腾讯云代码助手为例,展示了

杨不易呀 3045

量化交易新手入门:从零开始搭建你的第一个Python交易策略(附完整代码)

本文为量化交易新手提供从零开始搭建Python双均线策略的完整指南,涵盖环境配置、数据获取、策略实现及风险管理等关键步骤。通过详细的代码示例和实践建议,帮助读者快速掌握量化交易的核心技术,并避免常见陷阱。文章特别强调Python在量化交易中的技术革新优势,适合希望进入金融科技领域的初学者。

weixin_26905487的博客 443

Unity 官方 Demo: 2DPlatformer 的 SLua 版本。

  9月份时,趁着国庆阅兵的假期,将 Unity官方 Demo: 2DPlatformer 移植了一个SLua 版本,并放在了我的 GitHub 账号下:https://github.com/yaukeywang/2DPlatformer-SLua,用于大家交流和学习 Lua 的使用,尤其是基于 Unity 的 SLua 的使用。   目前已经同步更新为 SLua 1.0.1 版本,不过...

weixin_30697239的博客 163

微信小程序订阅消息实战:如何绕过长期订阅限制实现多次发送(附PHP代码)

本文针对微信小程序开发者无法获取长期订阅消息权限的痛点,提供了一套完整的实战解决方案。通过深入剖析一次性订阅与长期订阅的规则差异,结合巧妙的交互设计、稳健的PHP服务端发送引擎(含高并发处理与失败重试机制)以及授权池管理等高级策略,帮助开发者在合规前提下,构建高可用的消息推送系统,有效提升通知触达率与用户体验。

weixin_29008805的博客 620

SLua踩坑笔记:import "UnityEngine"

在向Unity项目中导入SLua框架时,遇到 [string "..."]:4: expect UnityEngine is type table stack traceback:     [C]: in function 'assert'     [string "..."]:4: in function 'import'     main:2: in main chunk

bark2003的专栏 3778

PySpark机器学习生产化陷阱:跨节点依赖问题的7种解决方案

隐式依赖陷阱使用ldd解决方案:在基础镜像中预装和路径冲突终极解法依赖树瘦身技巧用conda-tree可减少40%环境体积PySpark机器学习生产化的核心矛盾在于分布式环境的确定性与灵活性不可兼得。轻量级方案(1-3)牺牲一致性换取灵活性重量级方案(4-6)牺牲灵活性换取确定性混合方案(7)针对特殊场景补充正如某AI平台架构师所言:“环境一致性不是技术问题,而是工程纪律问题选择适合团队当前阶段的方案,建立严格的依赖管理流程,才能让PySpark真正扛起生产环境的大旗。

datacanvas2426的博客 909

Changer: Feature Interaction Is What You Need forChange Detection

还有“交换“交互是一种完全不需要参数和计算的操作,它是通过交换空间或通道维度上的双时态特征映射来实现的,交换的特征在经过后续的卷积或令牌混合时进行混合。方法二:提出了两种简单的交互策略,AD和特征“交换”,大量的实验表明,它们可以极大地提高MetaChanger的性能,特别是特征“交换”,即使嵌入到复杂的网络中或应用于具有挑战性的数据集。在这里,我们用虚线勾勒本文的重点。这是变化检测任务的基本问题,双时相图像提供了同一地区在不同时间点的图像数据,通过对比这两个时间点的图像,我们可以检测出该地区的变化。

yokon的博客 1619

Unity+Slua实现游戏常用UI组件(四)——树形组件

定义 LTree是一个从上往下分布的树形组件,类似于window的文件管理器,节点层次没有限制,并且支持自定义不同层次的节点元素与节点数据结构。与LScrollView一样,只创建满足Mask显示的最少元素,滚动过程中保持元素复用。游戏中一般会有二级甚至三级树形需求,这时就可以采用LTree组件 LTree效果展示 图1:文件夹系统 图2:二级列表 图3:缓存 图4:其他例子 特性 ...

lahmiley的博客 1616

小华半导体HC32芯片开发使用说明

HC32F/L系列MCU在Keil MDK和IAR Workbench环境下通过工程样例进行软件开发。

小布的芯视角 5626

Unity+Slua实现游戏常用UI组件(一)——滚动表格组件

Unity版本:5.6.6 Slua版本: LScrollView 1、展示效果 2、特性 2.1、支持滚动过程中组件的复用 2.2、支持不同列宽度不等 2.3、支持从上到下滚动,从左到右滚动 2.4、支持设置组件的宽度,高度,与mask的偏移值 3、切 其它细节可参照Unity 1、代码是针对UGUI的ScrollRect进行扩展,监听OnValueChanged事件,时刻...

lahmiley的博客 2302

SAP_通用模块-MASS批量操作技巧

SAP_MM模块-MASS/MM17批量更新主数据详细教程

风沙的博客 2164

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Slua自学(一)

Slua自学记录前言导入Slua功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 前言 公司项目需求,本人第一次接触Lu...

TryBest-ZD 4613

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

unity+slua热更流程演示

1.unity热更主要两部分,代码和资源。 ①制作需要热更的场景,随便拖几个东西。改个名字叫 myScene.scene ②制作入口场景,其实就是新建空场景,然后拖个按钮过来,上面绑两个脚本。Demo.cs 和 ResUpdate.cs 这个入口场景改名叫 begin.scene 2.制作需要热更的资源 这里资源包括lua代码还有一些prefabs --main

B-y的专栏 9662

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Unity 框架】QFramework v1.0 使用指南 介绍篇:02.Roadmap-路线图 | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏

02.Roadmap-路线图

凉鞋的笔记 1476

Unity+Slua实现游戏常用UI组件(二)——表格组件

LList定义 LList是一个列表式布局组件,可以单独使用,也可以结合ScrollRect使用变成滚动式列表组件 效果展示 特性 3.1、支持频繁设置显示数据(调用SetData)后元素的复用 3.2、支持元素水平或者垂直自动布局,元素高度或者宽度可以不一致 3.3、支持设置元素与元素之间的间隔(gap),设置边界元素与所属父节点的偏移值(padding) 3.4、支持翻页式布...

lahmiley的博客 1460

Unity+Slua实现游戏常用UI组件(六)——单(多)元素滚动布局组件

Unity+Slua实现游戏常用UI组件(六)——单(多)元素滚动布局组件单元素滚动布局组件定义效果复用逻辑新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式有了滚动布局组件之后为何还需要这两个组件? 单元素滚动布局组件 定义 滚动布局组件下只有一种元素,自动布局并支持滚动过程中元素复用 效果 LSIScrollView效果展示 #特性 – 2.1、创建满足Mask展示的最小...

lahmiley的博客 534

Unity 热更方案相关

ILRuntime - 官方 git 首页,建议全看完菜单中所有列出的内容 Ourpalm/ILRuntime - ILRT 纯C# 版 Ourpalm/ILRuntimeU3D - U3D ILRT 的 DEMO 程序的热升级 - Appliation Domain 的 动态 卸载、加载 实现热更 Mono为何能跨平台?聊聊CIL(MSIL) - IL 实例如何执行 谁偷了我的热更新?Mono,JIT,iOS - 很好的说明白 iOS 为何不能 JIT,还有 mmap + 函数指针..

Jave.Lin 的学习笔记 389
上一篇: 通过TimeLine中 SignalTrack轨道,动态获取Signal Emitter的Time属性
下一篇: 定时清理内存优化程序性能
LCF_CSharp
博客等级 码龄7年 11粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值