Skip to content

Instantly share code, notes, and snippets.

@MerlinTwi
MerlinTwi / FizzleFade.cs
Last active September 5, 2017 22:46
Псевдорандомный перебор всех чисел от 1..x
// Псевдорандомно перебирает все числа (кроме 0) без повторов
// https://ru.wikipedia.org/wiki/Регистр_сдвига_с_линейной_обратной_связью
uint feed = 0x12; // для результата в 5 бит
uint i = 1;
do {
if ((i & 1) != 0)
i = (i >> 1) ^ feed;
else
i = (i >> 1);
// 20 разных цветов для всяких графиков
// https://fly2sky.ru/ChartColors.png
#0000FF
#FF0000
#820080
#FFFF00
#00FF00
#0080FF
#5F5F5F
#F9A753
using UnityEngine;
namespace Common {
/// <summary>
/// Перебор координат по спирали против часовой стрелки:
/// (0:0),
/// (1:0), (1:1), (0:1), (-1:1), (-1:0), (-1:-1), (0:-1), (1:-1),
/// (2:-1), (2:0), (2:1), (2:2), (1:2), (0:2), (-1:2), (-2:2), (-2:1), (-2:0), (-2:-1), (-2:-2), (-1:-2), (0:-2), (1:-2), (2:-2),
/// (3:-2), ...
@MerlinTwi
MerlinTwi / gist:94486670748d30869326518ae32e6e93
Created November 25, 2017 12:40
Формула "честного" рандома
current_chance = (max — goods) / (length — tries)
max=сколько нужно выдать игроку предметов
length=на количество попыток (max=1, length=10: на 10 попыток один предмет, т.е. шанс 10%)
goods=сколько уже выпало предметов
tries=номер попытки (как только tries становится равным length, всё начинается заново)
@MerlinTwi
MerlinTwi / gist:8800ba409d19d7d2878fa75f4a4a3408
Created November 27, 2017 12:50
Unity компиляция под Android выдает: Too many field references
Если при компиляции под Android получается ошибка: Too many field references
По совету: http://answers.unity3d.com/questions/970713/too-many-method-references-max-is-65536.html
Надо объединить какие-нибудь модули в одном package
1. Выбрать жертву (например, модули от firebase)
2. Раскрыть все .aar архивы, после компиляции (даже неудачной) взять
раскрытые из .\Temp\StagingArea\android-libraries\ и положить их вместо .aar
3. Заменить в каждом из раскрытых AndroidManifest.xml тег "package" на "com.google.unity"
чтобы объединились вместе с модулями Google play (games или ads)
@MerlinTwi
MerlinTwi / AppInfo.cs
Last active March 29, 2024 20:02
Auto update Unity bundleVersion and save build time
using System;
public static class AppInfo {
//--- AutoGenerated.begin
public const string Version = "1.0.3";
public static readonly DateTime Date = new DateTime(2018, 04, 29, 13, 41, 08, 331, DateTimeKind.Utc);
//--- AutoGenerated.end
}
@MerlinTwi
MerlinTwi / ProcessExecute.cs
Created December 20, 2017 17:30
Execute third-party programs from Unity
using System.IO;
public static class ProcessExecute {
public static int Execute(string command, string arguments, out string output, out string error, string input = null) {
var proc = new System.Diagnostics.Process();
proc.StartInfo.UseShellExecute = false;
if (!string.IsNullOrEmpty(input))
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardError = true;
/// <summary>
/// Number of changes needed to turn one string into another.
/// Taken from https://www.dotnetperls.com/levenshtein
/// </summary>
public static int LevenshteinDistanceTo(string s, string t)
{
int n = s.Length;
int m = t.Length;
if (n == 0) return m;
if (m == 0) return n;
@MerlinTwi
MerlinTwi / gist:c25cbd3a6adf9b9b8db57c4dbfb5c505
Created March 12, 2018 06:59
Replace quotes ".." to pair «..»
public static string ReplaceQuotes(string s) {
var quotes = new[] { "«", "»" };
int n = 0;
while (true) {
int i = s.IndexOf("\"", StringComparison.Ordinal);
if (i < 0) break;
s = s.Substring(0, i) + quotes[n++%quotes.Length] + s.Substring(i + 1);
}
return s;
}
@MerlinTwi
MerlinTwi / Dump.cs
Created March 26, 2018 13:14
C# Dump all properties and fields of the object to string
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
using System.Text;
using UnityEngine;
/// <summary>
/// Dump configuration