手把手教你写抖音爆火小游戏之激战突围(二):注入灵魂,游戏主循环与场景管理

微信/抖音小游戏源码开发+php开发+论文+答辩PPT 小游戏源码是开发小游戏的重要资源,它可以让开发者快速开发出一个完整的小游戏,并根据自己的需求进行修改和定制。这是游戏开发的重要部分,决定了游戏的难易程度和可玩性。1. 省时省力:使用小游戏源码,开发者不需要从零开始编写代码,可以直接使用已有的代码进行开发,节约了大量的时间和精力。2. 灵活定制:提供了游戏的基本逻辑和操作,开发者可以根据自己的需求进行修改和定制,使游戏更符合自己的主题和风格。3. 学习经验:通过研究和修改小游戏源码,开发者可以学习到游戏开发的一些基本知识和技巧,提升自己的编程水平。 阅读详情

阅读前请先下载项目源码,边读边看源码以加深理解和实操,
源码地址已放于文章末尾!

嘿,各位未来的游戏大神们,欢迎回到咱们的专栏!上一期咱们把“地基”打得牢牢的,不仅搞定了环境,还把项目结构看了个底朝天。今天,咱们就要开始给这个“毛坯房”注入灵魂,让它真正地“活”起来!
在这里插入图片描述

咱们要解决一个核心问题:游戏是怎么从一堆静态的资源,变成一个能动、能交互的动态世界的?这就不得不提游戏开发的“圣杯”——游戏循环(Game Loop)。

游戏世界的心跳:游戏循环

想象一下你看过的动画片,比如《猫和老鼠》,它其实是由一秒钟24张静态图片连续播放形成的。游戏世界也是一个道理,它本质上是在以极快的速度(通常是每秒60次)不断地清空画布 -> 计算新位置 -> 绘制新画面。这个“清空-计算-绘制”的循环,就是游戏的心跳,我们称之为“游戏循环”。

在Cocos Creator里,引擎已经帮我们把这个最底层的循环给封装好了。我们开发者,就像是这部动画大片的“分镜导演”,只需要在每一帧(每一次循环)告诉引擎,哪个角色该往前走一步,哪个子弹该往前飞一点就行。而我们下达这些指令的地方,通常就是在组件脚本的 update 方法里。

// 这是一个非常简化的示例
// Cocos Creator的组件脚本,需要继承自Component
import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('YourScriptName')
export class YourScriptName extends Component {
    
    // 每帧都会被引擎自动调用
    update(deltaTime: number) {
        // deltaTime 就是距离上一帧过去的时间,通常是 0.016秒左右(1/60)
        // this.node 指的是挂载了这个脚本的节点
        // 为了让移动看起来平滑且与帧率无关,我们会用速度乘以时间
        this.node.position.x += 100 * deltaTime; // 让节点每秒向右移动100像素
    }
}

理解了这一点,咱们再去看游戏的启动流程,就会豁然开朗。

游戏启动:一场精心策划的“舞台剧”

一个游戏从你点击图标到能玩,背后经历了一系列复杂的加载和初始化流程,就像一场舞台剧,幕后人员需要先把灯光、道具、演员都准备好,然后大幕才能拉开。

我画了一张流程图,让大家看看这场剧是怎么开演的:

sequenceDiagram
    participant Player as 玩家
    participant Init as Init.ts (开场演员)
    participant GameDirector as GameDirector.ts (总导演)
    participant LevelManager as LevelManager.ts (关卡管家)
    participant RoleLayer as RoleLayer.ts (角色导演)

    Player->>+Init: 点击游戏图标,启动!
    Init->>Init: 系统初始化(initSystems),加载音频、UI、SDK等基础模块
    Init->>GameDirector: 告诉总导演:“基础模块OK,可以进游戏了!” (InitLoadFinished事件)
    Init->>Init: 显示主页UI (UISystem.showUI(UIEnum.HomeUI))
    Note over Init: 此时玩家看到主界面

    Player->>GameDirector: 点击“开始游戏”按钮
    GameDirector->>+GameDirector: 开始加载核心资源 (loadSubBound)
    Note over GameDirector: 加载 Game, Effect 等核心代码和资源
    GameDirector->>GameDirector: 加载关卡预制体,并创建对象池 (loadGameAssets)
    GameDirector->>-GameDirector: 资源加载完毕!
    GameDirector->>LevelManager: 激活“关卡管家”,准备开工!
    LevelManager->>+RoleLayer: 导演,该你上场了,把玩家角色给我创建出来!
    RoleLayer->>RoleLayer: 根据存档创建玩家队伍 (setRoles)
    LevelManager->>-RoleLayer: 角色就绪!
    Note over LevelManager: 同时,道路、道具、碰撞系统等也已就绪
    Note over Player: 游戏正式开始!

是不是感觉脉络清晰多了?咱们这就深入代码,看看这几位关键“演员”的“剧本”是怎么写的。

1. Init.ts (开场演员)

这是游戏的入口脚本,挂在我们的主场景 mainScene 的 Canvas 节点上。它的任务最纯粹,就是负责“开场”。

assets/Init/InitScripts/Init.ts 核心代码:

@ccclass('Init')
export class Init extends Component {

    // 这个变量用来确保初始化只执行一次,防止重复操作
    private isSysInitFish = false;

    // Cocos生命周期函数,节点加载时执行
    protected onLoad() {
        // ... 省略了获取Canvas和Camera的代码 ...
        this.uiLayer = this.node.getChildByName('UILayer'); // 找到UI的根节点
        this.initSystems(); // 立刻开始初始化各个系统
    }

    /** 初始化各个系统 */
    protected initSystems() {
        StorageSystem.init();   // 存档系统
        AudioSystem.init();     // 音频系统
        SDKSystem.init();       // SDK系统(对接平台用的)
        UISystem.init(this.uiLayer); // UI系统,告诉它UI应该放在哪
        AdvertSystem.init(this.uiLayer); // 广告系统
    }

    // Cocos生命周期函数,每帧执行
    protected update(dt) {
        // 因为各个系统的初始化可能是异步的,所以这里每帧检查一下
        this.checkSysInitState();
    }

    /** 检测各个系统是否加载完成 */
    protected checkSysInitState() {
        if (!this.isSysInitFish) {
            let isFinish = true;
            // 只要有一个系统没准备好,isFinish就是false
            isFinish = isFinish && StorageSystem.isInitFinished;
            isFinish = isFinish && AudioSystem.isInitFinished;
            // ... 检查所有系统 ...

            this.isSysInitFish = isFinish;
            if (this.isSysInitFish) {
                // 所有系统都说“我好了!”,那就正式进入游戏!
                this.enterGame();
            }
        }
    }
    
    /** 进入游戏 */
    protected enterGame() {
        // 发送一个全局事件,告诉其他可能在监听的模块:“初始化搞定啦!”
        EventManager.emit(EventTypes.GameEvents.InitLoadFinished);
        clog.log('#进入游戏');

        // 显示主界面UI
        UISystem.showUI(UIEnum.HomeUI);
        
        // 预加载一些核心资源包,让后续进入关卡时更快
        this.preLoadBound();
    }
}

代码解读:

  • Init.ts 的核心职责就是调用一系列 System 的 init() 静态方法,启动游戏的基础服务。
  • 它通过一个 update 里的轮询 (checkSysInitState) 来等待所有异步的初始化操作完成,这是一种简单有效的处理异步的方式。
  • 当一切准备就绪,enterGame 方法会显示主界面,并预加载资源,把舞台的控制权交给了玩家。
2. GameDirector.ts (总导演)

这位是重量级角色,负责游戏核心流程的调度。它在 onLoad 时就通过 EventManager 监听了各种游戏事件,比如我们最关心的 GameStart。

assets/Init/InitScripts/GameDirector.ts 核心代码:

@ccclass('GameDirector')
export class GameDirector extends Component {
    private _levelManager: Node = null; // 缓存一下关卡管理器的节点

    protected onLoad() {
        this.onEvents(); // 在加载时就开始监听事件
    }

    protected onEvents() {
        // 监听“游戏开始”事件,一旦听到,就执行 onGameStart 方法
        EventManager.on(EventTypes.GameEvents.GameStart, this.onGameStart, this);
        // ... 监听其他事件,比如游戏结束、暂停等 ...
    }

    /** 开始游戏 */
    protected onGameStart(cb?) {
        // 显示加载界面
        EventManager.emit(EventTypes.GameEvents.SetInitUIEnable, true);
        
        // 这是一个回调地狱,但逻辑很清晰:
        // 1. 先加载核心代码和资源分包
        this.loadSubBound(() => {
            // 2. 再加载关卡独有的额外资源(本项目没用到,但框架留了口子)
            this.loadExtralAssets(() => {
                // 3. 最后加载关卡场景里会用到的所有预制体(Prefab)
                this.loadGameAssets(() => {
                    // 预先创建一些对象到对象池里,避免玩的时候突然卡一下
                    this.preLoadPrefabs();
                    // 激活关卡管理器,正式开始游戏!
                    this._levelManager.active = true;
                    // 隐藏加载界面
                    EventManager.emit(EventTypes.GameEvents.SetInitUIEnable, false);
                    // 如果有回调,就执行(比如UI需要知道加载完成了)
                    cb && cb();
                })
            });
        })
    }
    
    /** 加载关卡必须的预制体 */
    private loadGameAssets(cb) {
        // ...
        // 获取 levelManager 的预制体实例,并挂到场景中
        this._levelManager = GlobalPool.get('LevelManager');
        this._levelManager.parent = this.node;
        // ...
        // 加载自定义的Prefab,并为它们创建对象池
        this.loadCustomPrefabs(() => {
            // ...
            cb && cb();
        });
    }

    /** 加载自定义预制体并创建对象池 */
    private loadCustomPrefabs(cb) {
        // ... 遍历需要加载的Prefab路径 ...
        Loader.loadBundleDir(bound, url, (prefabs: Prefab[]) => {
            // 加载完成后,为每一个Prefab创建一个专用的对象池
            for (let i = 0; i < prefabs.length; i++) {
                const p = prefabs[i];
                GlobalPool.createPool(p.data.name, p);
            }
            // ...
        }, Prefab, false);
    }
}

代码解读:

  • 事件驱动:GameDirector 的核心是一个事件监听器。它平时静静地待着,听到事件广播才开始干活。
  • 异步流程控制:通过回调函数,它将一系列异步的加载操作串联起来,保证了资源加载的正确顺序。
  • 对象池的准备:它最重要的职责之一,就是在游戏开始前,调用 GlobalPool.createPool,把所有后面会频繁使用的对象(敌人、子弹、特效)的“模具”(Prefab)都准备好,建立了对象池。
3. LevelManager.ts (关卡管家)

当 GameDirector 激活它后,它就正式接管了游戏世界。

assets/Game/Script/Common/LevelManager.ts 核心代码:

@ccclass('LevelManager')
export class LevelManager extends Component {
    // 在编辑器里拖入需要管理的逻辑层根节点
    @property(Node)
    private layerNodeArr: Node[] = []; 
    // 存放所有动态创建的游戏对象的根节点
    @property(Node)
    private perfabsLayer: Node = null;

    // 存放所有自定义逻辑层的实例
    private customLayers: BasicLayer[] = [];

    // Cocos生命周期,当节点第一次被激活时(也就是游戏开始时)调用
    protected onEnable() {
        this.reset(); // 重置所有数据
        this.setData(); // 设置新关卡的数据
    }
    
    /** 初始化自定义层级 */
    protected initCustomLayers() {
        // 按照游戏逻辑的依赖顺序,依次new出各个逻辑层
        this.customLayers.push(new RoadLayer(this.perfabsLayer)); // 先铺路
        this.customLayers.push(new PropsLayer(this.perfabsLayer)); // 再放道具
        this.customLayers.push(new CollisionManager(this.perfabsLayer)); // 然后建立碰撞网格
        this.customLayers.push(new EffectLayer(this.perfabsLayer)); // 特效层
        this.customLayers.push(new MergeEffectLayer(this.perfabsLayer)); // 合批特效层(子弹)
        this.customLayers.push(new RoleLayer(this.perfabsLayer)); // 最后创建角色
        // ...
    }

    /** 设定层级数据 */
    protected setCustomLayersData(d?) {
        // 遍历所有逻辑层,调用它们的 setData,把关卡数据传下去
        for (let i = 0; i < this.customLayers.length; i++) {
            this.customLayers[i].setData(d);
        }
    }

    // 每帧调用
    protected update(dt) {
        // ...
        // 驱动所有逻辑层进行更新
        this.updateCustomLayers(ft)
    }
}

代码解读:

  • 分层架构:LevelManager 体现了清晰的分层思想。它不关心具体的游戏逻辑,只负责管理 RoadLayer、RoleLayer 等具体的“施工队”。
  • 统一的生命周期:它将所有逻辑层统一纳入自己的生命周期管理。当 LevelManager 被激活(onEnable),它会调用所有层的 setData;在自己的 update 里,它会调用所有层的 customUpdate。这让整个关卡的逻辑更新井然有序。

今日总结

今天我们给游戏成功“注入了灵魂”!我们不仅理解了游戏循环这个核心概念,还通过深入分析 Init.ts、GameDirector.ts 和 LevelManager.ts 这三大“幕后功臣”的源码,彻底搞清楚了游戏从启动到运行的每一个细节。

我们学到了:

  • 事件驱动和回调函数如何管理复杂的异步流程。
  • 对象池的原理和重要性,以及它是在何时被创建的。
  • 清晰的分层架构如何让我们的代码不至于乱成一团麻。

现在,舞台已经搭好,灯光音响全部就位。下一期,万众瞩目的主角就要登场了!我们将深入 RoleLayer.ts 和 Role.ts,亲手把咱们的英雄队伍创建出来,并让他们听从我们的指挥,在屏幕上左右横跳!

准备好了吗?下一期,让咱们的角色“活”起来!敬请期待!

游戏源码下载地址:
https://wwuj.lanzoul.com/i4N1n33e9dib
验证码hack

300款抖音H5小游戏源码下载+php/python微信小程序源码开发搭建 本文将深入探讨小游戏与小程序源码开发的各个方面,包括技术基础、开发流程、关键技术点,并通过具体的代码实例来展示如何构建一个简单的小游戏或小程序。小游戏,顾名思义,是运行在特定平台上的轻量级游戏应用,它继承了小程序的诸多优点,如无需安装、即点即玩、跨平台等。对于小游戏开发,虽然也可以使用微信开发者工具,但部分小游戏平台(如Cocos Creator、LayaAir等)也提供了自己的开发工具和引擎,这些工具和引擎通常更加专注于游戏开发,提供了丰富的游戏开发功能和优化选项。编码完成后,需要进行调试测试。 阅读详情

相关推荐

最新小程序源码(微信/抖音小程序源码和小程序游戏源码开发)

点击“选择任务”,选择“微信小程序游戏”,然后点击“开始构建”,在3D传送门场景中选择cube.scene场景。进入小程序注册页面按照指引填写信息并提交相应信息,服务类别选择“程序游戏”,子类别可以先选择“休闲程序游戏”,您可以拥有自己的小程序游戏账号,安装并启动开发者工具。填写合适的项目名称,选择本机合适的空目录,登录刚刚注册了小程序管理平台,如下图找到小程序的AppID,填入表单的“AppId”文本框。选择左侧“小程序项目”中的“小程序游戏选项卡”,然后点击右侧的“+”号开始创建小程序游戏项目。

apgames的博客 5077

全开源微信/抖音小程序游戏源码搭建

在视频游戏设计中,游戏中的游戏有着悠久的传统,无论是替代模式、迷你谜题、增添世界现实的游戏,还是完全独立的游戏。无论是在战斗还是其他方面,角色扮演游戏,尤其是更现代的角色扮演游戏,通常都会为玩家提供以其他形式利用他们新磨练的技能的选择。“考验你的勇气”迷你游戏的另一个优点是,它们可以是必要的,也可以是非必要的,可以有严厉的惩罚,也可以根本没有惩罚;我知道这很野蛮,但这是有道理的。他应该可以选择打开锁,使用他对炸药的知识炸毁门,或者使用纯粹的蛮力将门撞倒,具体取决于他喜欢的游戏风格和独特的技能。

kaixinxiaohu的博客 5723

抖音很火的召唤神龙的小游戏完整代码-召唤神龙

抖音很火的解压小游戏,完整代码分享。有兴趣的可以试着写一下。 1. index <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>召唤神龙</title> <!--http://www.html5rocks.com/en/mobile/mobifying/--> <meta name="viewport" ..

m0_54803288的博客 1万+

抖音弹幕游戏挤地铁源码(仅供学习参考)可二次开发商用+搭建教程

抖音近期比较火的挤地铁直播相信大家都见到过,当然没见到过也不会来到这篇文章。话不多说直接上干货。

A4930的博客 4140

【Godot】【整活】用 50 行代码做一个“抖音同款解压小游戏”(附源码)

摘要:本文介绍如何使用Godot4引擎在50行代码内实现一个解压小游戏"点击爆炸"。游戏核心机制包括:点击屏幕生成球体、球体自动扩散、碰撞触发连锁爆炸和粒子特效反馈。文章详细拆解了项目结构、核心代码和优化技巧,重点强调了通过粒子效果、扩散速度和碰撞范围调整来增强游戏"爽感"。这种简单机制+强反馈的设计模式解释了此类小游戏受欢迎的原因,并提供了进阶玩法建议。文末附完整可复制代码,展示了如何用最少代码实现最大游戏效果。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 515

抖音情侣飞行棋HTML网站源码下载

最近抖音很火的情侣飞行棋网站源码,这款情侣飞行棋提供了丰富的游戏玩法,可以为情侣、朋友或家人带来欢乐的游戏体验。无论是在家中,还是在聚会、旅行等场合,都可以轻松启动该网站,共同享受游戏的乐趣。 游戏规则 1.摇筛子自动走棋 2.每个格子都有任务,也可以自行商量执行其他任务 3.率先走到终点的一方,获得胜利

手把手教你写抖音爆火小游戏之激战突围(一):万丈高楼平地起,项目初探与环境搭建

《激战突围:Cocos Creator游戏开发入门指南》 本文以抖音热门的解压小游戏为原型,介绍使用Cocos Creator开发《激战突围》游戏的入门教程。文章首先推荐了开发工具(Cocos Creator、VS Code),然后详细解析了项目结构:assets目录包含核心代码(Game玩法模块、Init初始化、UI界面)和资源文件(LevelData关卡配置、effects特效、AudioAssets音效)。作者建议新手先理清项目骨架,后续将深入讲解游戏主循环和场景管理。文章最后提供了游戏源码下载地址,

THMAIL的博客 1597

2023抖音很火的情侣飞行棋网站源码

最近抖音很火的情侣飞行棋网站源码,这款情侣飞行棋提供了丰富的游戏玩法,可以为情侣、朋友或家人带来欢乐的游戏体验。无论是在家中,还是在聚会、旅行等场合,都可以轻松启动该网站,共同享受游戏的乐趣。 游戏规则 1.摇筛子自动走棋 2.每个格子都有任务,也可以自行商量执行其他任务 3.率先走到终点的一方,获得胜利

手把手教你写抖音爆火小-游戏之激战突围(三):主角登场,从零开始创建玩家

摘要: 本文详解了游戏角色创建与控制的实现过程。通过 RoleLayer 管理角色,setRoles 方法根据存档数据计算并创建小兵和巨人队伍。createRoles 方法负责实例化角色,安排阵型位置,并注入 Role 逻辑类作为角色的"灵魂"。Role.init 方法初始化角色的视图、动画、状态机等模块。最后通过 HorizonTouch 实现"皮筋模型"的触摸控制,让角色队伍能跟随玩家操作移动。整个系统采用数据与视图分离的设计模式,使代码结构更清晰。

THMAIL的博客 1139

SpringBoot实现电子发票生成

电子发票是近年来比较流行的一种票据形式,它取代了以往传统的纸质发票,具有减少纸张浪费、方便有效查验等优点。本文将介绍如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。在本文中,我们介绍了如何使用Spring Boot和Vue.js构建一个仿真电子发票生成应用程序,借助微信二维码扫描功能和第三方库,实现用户扫描二维码获取发票信息并填写相关开票信息,最后生成电子发票。

不愧是暮言的博客 6093

HBuilderx连接微信开发者工具

系列文章目录 文章目录系列文章目录前言一、环境1.HBuilerx 工具2.微信开发者工具二、关联微信开发者工具1.HBuilderx新建项目2.关联微信开发者工具3.运行微信小程序出现异常解决方法3.最终效果总结 前言 使用HBuilderx工具关联微信开发者工具,进行小程序开发 提示:以下是本篇文章正文内容,下面案例可供参考 一、环境 1.HBuilerx 工具 HBuilderx 2.微信开发者工具 微信开发者工具 二、关联微信开发者工具 1.HBuilderx新建项目 2.关联微信开发者工具

拥有必珍惜 3075

手把手教你写抖音爆火小游戏之激战突围(六):开天辟地 —— 用代码动态生成游戏世界

今天我们扮演了一次“创世神”,把程序化生成关卡的核心秘密看了个底朝天。我们不仅学习了如何从一份数据蓝图开始,用代码铺设出完整的游戏路径,更掌握了一项极其重要的性能优化神技。数据驱动的关卡生成:如何用这样的数据结构来定义关卡,并用RoadLayer来解析和搭建。程序化拼接:通过遍历和对象池,将预制好的路段像乐高积木一样拼接成无限长的关卡。基于视野的动态加载/卸载:这是本章的精华!通过方法,我们实现了只在需要时才创建和显示场景物件,在不需要时就立刻回收,从而在保证视觉效果的同时,极大地优化了游戏性能。

THMAIL的博客 1159

huggingface下载提示huggingface_hub.errors.EntryNotFoundError:404 Client Error: (Request 1D: Root...如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1233

惊了!竟然有上千款小游戏源码,可直接打包H5\微信\抖音,赶紧收藏!

很多人还不知道 Cocos Store 资源商城,它是国内最大的小游戏资源平台。上面有大量免费游戏源码可以下载,比如下图的《赛博朋克》,项目中包含大量模型、贴图,还有游戏源代码,通过Cocos引擎可以直接在浏览器上玩。本文就带你从Cocos引擎的下载、安装、到游戏源码运行,Let's Go!!!01 下载 Cocos Dashboard打开浏览器,进入 Cocos Store 资源商城,找到比如 ...

奎特尔星球 5926

基于Python实现人脸识别相似度对比

随着人工智能技术的不断进步,人脸识别成为了一种广泛应用的技术。人脸相似度对比是其中的一个重要应用场景,可以用于人脸搜索、身份验证等方面。本文将介绍如何使用Python实现人脸相似度对比。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 9809

6、哈代空间、算子函数及相关概念解析

本文深入探讨了数学中哈代空间与算子函数的核心概念,包括强函数的因式分解、半单零点的定义与性质、Blaschke-Potapov乘积的存在性、Nagy-Foias模型算子的结构与谱分析、可数集合的相关性质(如Carlesonian集合、稀有集合等)、简单分式族的可分性与基性质,以及指数型整函数的增长特性。文章还分析了这些数学对象之间的内在联系,并通过图表与表格形式直观呈现了集合性质与函数空间结构的关系。这些理论不仅在数学分析和泛函分析中具有重要意义,也在信号处理、量子力学等应用领域具有广泛价值。

yhn4567890的博客 170

最近抖音很火的情侣飞行棋html源码

2023 抖音情侣飞行棋网站源码2023 抖音情侣飞行棋网站源码2023 抖音情侣飞行棋网站源码2023 抖音情侣飞行棋网站源码2023 抖音情侣飞行棋网站源码。2.每个格子都有任务,也可以自行商量执行其他任务。3.率先走到终点的一方,获得胜利。

m0_48069349的博客 5862

HFSS实战项目——GPS北斗双模微带天线

本文设计了一款方形圆极化微带天线应用于北斗B1和GPSL1频段,满足高增益、低VSWR、适当方向图等要求。设计中心频率为1568MHz,介质板采用厚度h=1.6mm的Arlon AD450(tm)板,相对介电常数为4.5,采用探针馈电。

2401_87464239的博客 1768

开源抖音小程序系统源码分享+完整版安装教程

给大家分享一个抖音小程序系统源码,系统是开源运营版,源码包含完整搭建部署教程,内含多套模板、模块化自由DIY功能,支持除抖音小程序制作外,还支持一键同步微信、支付宝、百度、今日头条端小程序等等,功能是十分强大的,多端合一小程序SAAS系统源码。一个后台整合7端,完美整合微信小程序、支付宝小程序、百度小程序、抖音小程序、今日头条小程序、微信公众号端、H5端,全网功能最强大,功能最丰富。系统为多用户系统,可以无限开账号,无限添加小程序,每个用户独立后台,互不干扰。源码下载地址:春哥技术博客获取。

春哥团队技术博客 3289

GEE训练教程:基于Sentinel-2卫星的归一化建筑指数(NDBI)等的进行城市扩张分析

本文介绍利用Sentinel-2卫星数据和谷歌地球引擎平台监测印度卡姆鲁普都会区2018-2024年城市扩张的方法。通过计算归一化建筑指数(NDBI)、植被指数(NDVI)和水体指数(MNDWI),采用多阈值规则识别建设用地,并量化不同年份的城市扩张面积。代码实现了从数据预处理、指数计算到面积统计的完整流程,为城市扩张研究提供了可复制的技术方案。关键参数包括年份选择、云覆盖阈值和分类阈值,均可根据研究需求调整。该方法能有效追踪城市边界变化,为城市规划提供数据支持。

此星光明博客 135

使用 MATLAB/Simulink 构建一个 核电站汽轮机与发电机协调控制系统 的仿真模型

在核电机组中,汽轮机-发电机系统是将核能最终转化为电能的关键环节。与火电机组不同,核反应堆的热惯性大、功率调节慢,因此汽轮机的控制策略需与反应堆特性相匹配,实现安全、稳定、高效的能量转换。维持发电机输出功率/频率稳定(响应电网调度)调节汽轮机进汽压力(匹配一回路蒸汽供应)实现“堆-机协调控制”保障机组在启停、变负荷、甩负荷等工况下的安全性本教程将带你使用构建一个核电站汽轮机与发电机协调控制系统汽轮机调速系统(调门控制)建模发电机与电网接口建模(同步机)

xiaoheshang_123的博客 189

抖音上情侣玩的小游戏--猜数字 单身狗 没朋友也能玩 附HTML源码

先上图 代码如下 直接运行即可 欢迎各位大佬提意见 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-sca

weixin_44670249的博客 4557

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

23款小游戏源码,可学习、二次开发,可直接变更为微信小游戏抖音小游戏

(15)Puzzle Tap游戏,可用于学习、二次开发,可适配为微信小游戏抖音小游戏。(1)当官消消乐游戏源码,可用于学习、二次开发,可适配为微信小游戏抖音小游戏。(3)飞机大战游戏源码,可用于学习、二次开发,可适配为微信小游戏抖音小游戏。(21)糖果消消乐游戏,可用于学习、二次开发,可适配为微信小游戏抖音小游戏。(14)成语大师游戏,可用于学习、二次开发,可适配为微信小游戏抖音小游戏。(12)方块鸟游戏,可用于学习、二次开发,可适配为微信小游戏抖音小游戏。

初尘屿风的博客 2012

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

抖音热门互动小游戏“可以成为我的恋人吗”HTML源码解析与实现

抖音上较火的“可以成为我的恋人吗”HTML源码,双击html文件可以本地运行,打开HTML页面,上面显示可以或者不要,越是拒绝,可以的按钮就会越来越大,直到点击可以为止,喜欢的朋友可以拿去。

专注于与编程相关的知识内容分享 3190

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Unity发布抖音小游戏:广告ID申请

上篇介绍了小游戏的申请和认证,本篇介绍广告ID申请。点击广告中心的“流量主”菜单。申请开通流量主,流量主是指开发者在字节小游戏中通过创建、分发广告获取流量收入。

成长ing中的w的专栏 5448

抖音小游戏源码 - 消消乐 | 含激励广告+成就系统 | 开箱即用商业级消除游戏模板

抖音小游戏源码 - 消消乐 | 含激励广告+成就系统 | 开箱即用商业级消除游戏模板

云起SAAS 1033
上一篇: 手把手教你写抖音爆火小游戏之激战突围(一):万丈高楼平地起,项目初探与环境搭建
下一篇: 手把手教你写抖音爆火小-游戏之激战突围(三):主角登场,从零开始创建玩家
THMAIL
博客等级 码龄10年 2435粉丝 432原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

THMAIL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值