修改unity3d游戏资源
2015-06-09 16:49:29 frankpi 阅读数 7275

视频里的东西,整理成文章,

Unity3D逆向系列(基础)大纲

基础介绍篇
1.unity逆向环境搭建
  1..Net framework 4.0/3.5/3.0/2.5      360软件管家中下载
  2.reflector v8.2.0.42【破解注册】    http://pan.baidu.com/s/1pJx9HSR

  3.apkdb1.9.0apk反编译工具(需要JAVA环境)http://pan.baidu.com/s/1eQoZtmE

安装破解需要断网

 

2.unity文件介绍
  1.所有文件都在/bin/data里面
  2.settings.xml                 unity配置文件
  3.splash.png                   apk默认启动图
  4.sharedassets0.assets         unity资源文件打包文件
  5.sharedassets0.assets.split   unity资源文件打包文件
  6.managed文件夹                unity游戏源代码
  7.unity default resources      unity语言包



3.reflector工具使用

  1.Analyze关联定位工具  ctrl+R
    1.depends on 数据来源
    2.used by    数据应用
  2.Search查找工具       F3
    1.Search Type                 查找类名
    2.Search Member               查找方法名
    3.Search string or constant   查找字符串或者数值
    4.exact match                 精确匹配
  3.Language反编译代码显示方式
    C#、vb等多种方式
  4.refresh              F5
    修改小技巧
  5.reflexil代码修改工具
    1.offset行数
    2.opcode代码类型、定义类型
    3.operand代码数值、调用类型

 

常用关键字篇

中文>>>>>>>>>>>>英文
金币            gold、coin、cash、money
钻石、宝石      Gem、diamond
生命            health、life、HP、Max hp

冷却时间    cooldown

蓝              mp、sp、Power
攻击            attack(atk)、fight、hit、damage
防御            defence(def)
护甲            Armor
物理            physic(phy)
魔法            magic(mag)
暴击            Crit(cri)(crt)
闪避            Dodge
范围            range
速度、频率      speed
改路            Rate
恢复            Recover
取              get
置              set
支付            bill、billing、pay、purchase
成功            success
失败            fail
取消            cancel
分数            Score
死亡            Dead
英雄、玩家      Hero、player
怪物、敌人      monster、Enemies(enemy)
初始化          init
力量            power、str、strength
智力            int、Intelligence
运气            luk、luck
敏捷            AGI、agile
体质            vital、vit、stamina

 

 

常用IL指令篇

加减乘除
Add:将两个值相加并将结果赋值到新的变量。
Add.Ovf:将两个整数相加,执行溢出检查,并且将结果赋值到新的变量。
Add.Ovf.Un:将两个无符号整数值相加,执行溢出检查,并且将结果赋值到新的变量。

Div:将两个值相除并将结果作为float或者int32赋值到新的变量。
Div.Un:两个无符号整数值相除并将结果 ( int32 ) 赋值到新的变量。

Mul:将两个值相乘并赋值到新的变量。
Mul.Ovf:将两个整数值相乘,执行溢出检查,并赋值到新的变量。
Mul.Ovf.Un:将两个无符号整数值相乘,执行溢出检查,并赋值到新的变量。


Neg:对一个值取他的相反数。

Add:将两个值相加并将结果赋值到新的变量。
Mul:将两个值相乘并赋值到新的变量。
Sub:将两个值相减并将结果赋值到新的变量。
Div:将两个值相除并将结果作为float或者int32赋值到新的变量。



并列
And:计算两个值的按位“与”并将结果赋值到新的变量。值为1或者0.


判断
Beq:如果两个值相等,则跳转到指定行数。
Beq.S:如果两个值相等,则跳转到指定行数(短格式)。
Bge:如果第一个值大于或等于第二个值,则跳转到指定行数。
Bge.S:如果第一个值大于或等于第二个值,则跳转到指定行数(短格式)。
Bge.Un:当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则跳转到指定行数。
Bge.Un.S:当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则跳转到指定行数(短格式)。
Bgt:如果第一个值大于第二个值,则跳转到指定行数。
Bgt.S:如果第一个值大于第二个值,则跳转到指定行数(短格式)。
Bgt.Un:当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则跳转到指定行数。
Bgt.Un.S:当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则跳转到指定行数(短格式)。
Ble:如果第一个值小于或等于第二个值,则跳转到指定行数。
Ble.S:如果第一个值小于或等于第二个值,则跳转到指定行数(短格式)。
Ble.Un:当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于或等于第二个值,则跳转到指定行数。
Ble.Un.S:当比较无符号整数值或不可排序的浮点值时,如果第一个值小于或等于第二个值,则跳转到指定行数(短格式)。
Blt:如果第一个值小于第二个值,则跳转到指定行数。
Blt.S:如果第一个值小于第二个值,则跳转到指定行数(短格式)。
Blt.Un:当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于第二个值,则跳转到指定行数。
Blt.Un.S:当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于第二个值,则跳转到指定行数(短格式)。
Bne.Un:当两个无符号整数值或不可排序的浮点型值不相等时,将跳转到指定行数。
Bne.Un.S:当两个无符号整数值或不可排序的浮点型值不相等时,则跳转到指定行数(短格式)。
Br:无条件跳转到指定行数。
Br.S:无条件跳转到指定行数(短格式)。


数值转换:
Conv.I:将指定变量的值转换为 native int。
Conv.I1:将指定变量的值转换为 int8,然后将其扩展(填充)为 int32。
Conv.I2:将指定变量的值转换为 int16,然后将其扩展(填充)为 int32。
Conv.I4:将指定变量的值转换为 int32。
Conv.I8:将指定变量的值转换为 int64。
Conv.Ovf.I:将指定变量的有符号值转换为有符号 native int,并在溢出时引发 OverflowException。
Conv.Ovf.I.Un:将指定变量的无符号值转换为有符号 native int,并在溢出时引发 OverflowException。
Conv.Ovf.I1:将指定变量的有符号值转换为有符号 int8 并将其扩展为 int32,并在溢出时引发 OverflowException。
Conv.Ovf.I1.Un:将指定变量的无符号值转换为有符号 int8 并将其扩展为 int32,并在溢出时引发 OverflowException。
Conv.Ovf.I2:将指定变量的有符号值转换为有符号 int16 并将其扩展为 int32,并在溢出时引发 OverflowException。
Conv.Ovf.I2.Un:将指定变量的无符号值转换为有符号 int16 并将其扩展为 int32,并在溢出时引发 OverflowException。
Conv.Ovf.I4:将指定变量的有符号值转换为有符号 int32,并在溢出时引发 OverflowException。
Conv.Ovf.I4.Un:将指定变量的无符号值转换为有符号 int32,并在溢出时引发 OverflowException。
Conv.Ovf.I8:将指定变量的有符号值转换为有符号 int64,并在溢出时引发 OverflowException。
Conv.Ovf.I8.Un:将位指定变量的无符号值转换为有符号 int64,并在溢出时引发 OverflowException。
Conv.Ovf.U:将指定变量的有符号值转换为 unsigned native int,并在溢出时引发 OverflowException。
Conv.Ovf.U.Un:将指定变量的无符号值转换为 unsigned native int,并在溢出时引发 OverflowException。
Conv.Ovf.U1:将指定变量的有符号值转换为 unsigned int8 并将其扩展为 int32,并在溢出时引发 OverflowException。
Conv.Ovf.U1.Un:将指定变量的无符号值转换为 unsigned int8 并将其扩展为 int32,并在溢出时引发 OverflowException。
Conv.Ovf.U2:将指定变量的有符号值转换为 unsigned int16 并将其扩展为 int32,并在溢出时引发 OverflowException。
Conv.Ovf.U2.Un:将指定变量的无符号值转换为 unsigned int16 并将其扩展为 int32,并在溢出时引发 OverflowException。
Conv.Ovf.U4:将指定变量的有符号值转换为 unsigned int32,并在溢出时引发 OverflowException。
Conv.Ovf.U4.Un:将指定变量的无符号值转换为 unsigned int32,并在溢出时引发 OverflowException。
Conv.Ovf.U8:将指定变量的有符号值转换为 unsigned int64,并在溢出时引发 OverflowException。
Conv.Ovf.U8.Un:将指定变量的无符号值转换为 unsigned int64,并在溢出时引发 OverflowException。
Conv.R.Un:将指定变量的无符号整数值转换为 float32。
Conv.R4:将指定变量的值转换为 float32。
Conv.R8:将指定变量的值转换为 float64。
Conv.U:将指定变量的值转换为 unsigned native int,然后将其扩展为 native int。
Conv.U1:将指定变量的值转换为 unsigned int8,然后将其扩展为 int32。
Conv.U2:将指定变量的值转换为 unsigned int16,然后将其扩展为 int32。
Conv.U4:将指定变量的值转换为 unsigned int32,然后将其扩展为 int32。


参数调用:
Ldarg:将参数(由指定索引值引用)调用。
Ldarg.0:将索引为 0 的参数调用。
Ldarg.1:将索引为 1 的参数调用。
Ldarg.2:将索引为 2 的参数调用。
Ldarg.3:将索引为 3 的参数调用。
Ldarg.S:将参数(由指定的短格式索引引用)调用。


数值定义:
Ldc.I4:定义一个int32数值。
Ldc.I4.0:定义一个int32数值,值为0。
Ldc.I4.1:定义一个int32数值,值为1。
Ldc.I4.2:定义一个int32数值,值为2。
Ldc.I4.3:定义一个int32数值,值为3。
Ldc.I4.4:定义一个int32数值,值为4。
Ldc.I4.5:定义一个int32数值,值为5。
Ldc.I4.6:定义一个int32数值,值为6。
Ldc.I4.7:定义一个int32数值,值为7。
Ldc.I4.8:定义一个int32数值,值为8。
Ldc.I4.M1:定义一个int32数值,值为-1。
Ldc.I4.S:把int8数值当做int32类型(短格式)。
Ldc.I8:定义一个int64数值。
Ldc.R4:定义一个float32数值。
Ldc.R8:定义一个float64数值。

 

修改操作篇

0   ldarg.0
1   要加的数1
2   要加的数2
3   加减乘除  操作符
4   ret

修改数,或者修改符号

opcode 文档

opcode

工具:ilspy

提取Unity3D 的资源文件

http://www.kanxue.com/bbs/showthread.php?t=191380

Disunity

解压缩包的解压QuickBMS

http://aluigi.altervista.org/quickbms.htm

猛犸汉化QuickBMS中文

http://www.81256.com/game-24905-1-1.html

扑家汉化

http://www.pujia8.com/articles/11/

新加:il2cppdumper

关注微信公众号了解更多il2cppdumper 的内容

 

2011-12-16 15:54:00 weixin_30642029 阅读数 1

原来那个用Unity3D自带的火焰老改不出想要的效果,去看了一个教程,调出一个还好的感觉。

 

                             

最后的效果是:

转载于:https://www.cnblogs.com/gameprogram/archive/2011/12/16/2290310.html

2016-12-22 10:54:08 u013108312 阅读数 7192

本文固定连接:http://blog.csdn.net/u013108312/article/details/53811458
购买unity3d视频链接:http://mp.weixin.qq.com/s/8RN8bNqG5aD0cSqeWbRL5A


新建 IconManager.cs

using System;
using System.Reflection;
using UnityEditor;
using UnityEngine;

/// <summary>
/// 对象Icon管理设置
/// </summary>
public class IconManager
{
    #region 数据定义
    private static GUIContent[] labelIcons;
    private static GUIContent[] largeIcons;

    /// <summary>
    /// Label类型icon 显示文字的
    /// </summary>
    public enum LabelIcon
    {
        Gray = 0,
        Blue,
        Teal,
        Green,
        Yellow,
        Orange,
        Red,
        Purple
    }
    /// <summary>
    /// 其他icon不显示文字
    /// </summary>
    public enum Icon
    {
        CircleGray = 0,
        CircleBlue,
        CircleTeal,
        CircleGreen,
        CircleYellow,
        CircleOrange,
        CircleRed,
        CirclePurple,
        DiamondGray,
        DiamondBlue,
        DiamondTeal,
        DiamondGreen,
        DiamondYellow,
        DiamondOrange,
        DiamondRed,
        DiamondPurple
    }
    #endregion

    #region 外部接口
    public static void SetIcon(GameObject gObj, LabelIcon icon)
    {
        if (labelIcons == null)
        {
            labelIcons = GetTextures("sv_label_", string.Empty, 0, 8);
        }

        SetIcon(gObj, labelIcons[(int)icon].image as Texture2D);
    }

    public static void SetIcon(GameObject gObj, Icon icon)
    {
        if (largeIcons == null)
        {
            largeIcons = GetTextures("sv_icon_dot", "_pix16_gizmo", 0, 16);
        }

        SetIcon(gObj, largeIcons[(int)icon].image as Texture2D);
    }

    private static void SetIcon(GameObject gObj, Texture2D texture)
    {
        var ty = typeof(EditorGUIUtility);
        var mi = ty.GetMethod("SetIconForObject", BindingFlags.NonPublic | BindingFlags.Static);
        mi.Invoke(null, new object[] { gObj, texture });
    }
    #endregion

    #region 内部

    private static GUIContent[] GetTextures(string baseName, string postFix, int startIndex, int count)
    {
        GUIContent[] guiContentArray = new GUIContent[count];

        var t = typeof(EditorGUIUtility);
        var mi = t.GetMethod("IconContent", BindingFlags.Public | BindingFlags.Static, null, new Type[] { typeof(string) }, null);

        for (int index = 0; index < count; ++index)
        {
            guiContentArray[index] = mi.Invoke(null, new object[] { baseName + (object)(startIndex + index) + postFix }) as GUIContent;
        }

        return guiContentArray;
    }

    #endregion
}

测试:

IconManager.SetIcon(obj, IconManager.LabelIcon.Blue);
2017-11-22 11:07:54 wengpanfeng 阅读数 2105

     最近工程从unity4.7升级到Unity5.6,关于粒子特效这一块,每个粒子上面的某个属性值都要更改一次,少的话自己手动改改完事儿,但是就是因为太多,所以想让我写一个脚本帮忙实现自动修改。

     每个粒子都做成了prefab,接下来要做的是:如何在Editor 模式下修改prefab的属性值?之前我也没做过关于修改prefab值的方法,网上也没查着啥,也许关键字搜的不对? 只找到一篇可以参考的文章:https://www.cnblogs.com/klkucan/p/4934518.html   只能自己试了呗,发现这句代码:

GameObject prefabObj = AssetDatabase.LoadAssetAtPath(path, typeof(GameObject)) as GameObject;

参数1:path是prefab的全路径,包括后缀名。

这句代码能够获取prefab的对象,既然获取到了对象,后面修改属性值什么的便不在话下了,这里不再赘述。

如有更好的方法和建议欢迎大家提供!

邮箱:1509618350@qq.com

 

2014-06-25 14:30:06 u010841622 阅读数 9022

 

using UnityEngine;
using System.Collections;

public class PlayAminitors : MonoBehaviour {

	public GameObject gaminitor;
	public RuntimeAnimatorController controller1,controller2;	//动画
	public AudioSource audioSource1,audioSource2;

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		if (Input.GetKey (KeyCode.Alpha1)) {
			//找到动画组件的Animator组件,获得cotroler属性,修改为controller1
			gaminitor.GetComponent<Animator>().runtimeAnimatorController = controller1;
			//播放声音
			if(!audioSource1.isPlaying)
				audioSource1.Play();
		}else if(Input.GetKey (KeyCode.Alpha0)){
			//设置为null,则动画停止
			gaminitor.GetComponent<Animator>().runtimeAnimatorController = null;
		}else if(Input.GetKey (KeyCode.Alpha2)){
			gaminitor.GetComponent<Animator>().runtimeAnimatorController = controller2;
		}
	}
}


 

 

 

没有更多推荐了,返回首页