Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save DigitalMachinist/b7107e7a66f5d63683a0268400c52470 to your computer and use it in GitHub Desktop.
Save DigitalMachinist/b7107e7a66f5d63683a0268400c52470 to your computer and use it in GitHub Desktop.
A useful script to identify Unity resource that are not referenced in the project
#!/bin/bash
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
NC='\033[0m'
if [ -z "o1" ]
then
root="./"
echo "No root path supplied... Using current folder."
else
root="$1"
fi
rm unused_files.log &> /dev/null
grep -r $root --include=\*.meta --exclude=*{Editor,Gizmos}* -e 'guid' | while read line; do
guuid=`echo $line | awk '{print $NF}'`
path=`echo $line | cut -f1 -d":"`
no_meta=`echo $path | sed "s/.meta$//"`
# Skip if is directory
if [[ -d $no_meta ]]; then
continue
fi
filename=$(basename "$path")
filename="${filename%.*}"
echo -e "${GREEN}Currently searching for $guuid in $filename${NC}"
grep -rn . --include=\*.{unity,anim,controller,prefab,mat} -e $guuid -q
if [[ $? != 0 ]]; then
echo $filename | grep .cs$ && is_script=$? || is_script=$?
echo $filename | grep .unity$ && is_map=$? || is_map=$?
if [[ $is_script == 0 ]]; then
echo -e "${YELLOW}FILE $path not used directly, searching...${NC}"
grep -rn . --include=\*.cs --exclude=$no_meta -e "${filename%.*}" -q
if [[ $? != 0 ]]; then
echo -e "${RED}FILE $path is unused!!!${NC}"
echo $path >> unused_files.log
fi
elif [[ $is_map == 0 ]]; then
echo -e "${YELLOW}FILE $path not used directly, searching...${NC}"
grep ProjectSettings/EditorBuildSettings.asset -e `echo $no_meta | sed "s/^\.\///"` -q
if [[ $? != 0 ]]; then
echo -e "${RED}FILE $path is unused!!!${NC}"
echo $path >> unused_files.log
fi
else
echo -e "${RED}FILE $path is unused!!!${NC}"
echo $path >> unused_files.log
fi
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment